TempDB не хватает места для запроса MERGE - PullRequest
0 голосов
/ 07 февраля 2019

Я использую запрос MERGE, который вставляет более 800 миллионов записей в таблицу из другой таблицы в той же базе данных (проект преобразования).Мы сталкиваемся с этой ошибкой ниже, когда она попадает в эту конкретную таблицу, в которую необходимо выполнить запись для слияния SQL.

2019-02-05 16: 35: 03.002 Ошибка Не удалось выделить место для объекта 'dbo.SORTвременное хранилище: 140820412694528 'в базе данных' tempdb ', потому что файловая группа' PRIMARY 'заполнена.Создайте дисковое пространство, удаляя ненужные файлы, удаляя объекты в файловой группе, добавляя дополнительные файлы в файловую группу или устанавливая автоматический рост для существующих файлов в файловой группе.

  MERGE dbo.' +  @p_TargetDLTable + ' as TARGET
  USING dbo.' +  @p_SourceDLSDTable + ' as SOURCE
  ON (TARGET.docid = source.docid AND TARGET.objectid = source.objectid AND 
  target.pagenum = source.pagenum
  and target.subpagenum = source.subpagenum and target.pagever = 
  source.pagever and target.pathid = source.pathid
  and target.annote = source.annote)

 WHEN NOT MATCHED BY TARGET AND source.clipid != ''X''
 THEN INSERT (docid, pagenum, subpagenum, pagever, objectid, pathid, annote, 
 formatid, ftoffset, ftcount) VALUES (
 source.docid, source.pagenum, source.subpagenum, source.pagever, 
 source.objectid, source.pathid,source.annote ,source.formatid 
,source.ftoffset, source.ftcount); ' 

Причина, по которой я решил использовать запрос MERGE вместо INSERT INTO, заключалась в том, что во всех исследованиях указывалось, какой тип объединения должен быть выполнен, это приведет к более высокой производительности.

Есть ли способ увеличить TempDB, или есть ли способ для слияния не использовать TempDB?Использует ли запрос INSERT INTO также TempDB?

...