Я пытаюсь пакетно вставить строки из одной таблицы в другую.
DECLARE @batch INT = 10000;
WHILE @batch > 0
BEGIN
BEGIN TRANSACTION
INSERT into table2
select top (@batch) *
FROM table1
SET @batch = @@ROWCOUNT
COMMIT TRANSACTION
END
Он работает на первых 10000 и вставляет их. Затем я получаю сообщение об ошибке «Не удается вставить дубликат ключа», в котором он пытается вставить тот же первичный ключ, поэтому я предполагаю, что он пытается повторить тот же пакет. Какой лог c я пропускаю здесь, чтобы l oop через партии? Возможно, что-то простое, но я не могу понять.
Кто-нибудь может помочь? спасибо