Я использую запрос 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?