Мне нужно обновить миллионы строк как часть моего следующего выпуска, но при этом заполняется журнал транзакций и происходит сбой.У меня есть несколько идей, но я не эксперт по SQL, поэтому я уверен, что будут ошибки, о которых я не знаю.
Соответствующие пункты:
- Мне нужночтобы передать скрипт операционной группе, так что нужен метод T-SQL без ручного вмешательства.
- Очевидно, что журнал транзакций перерабатывается каждые 15 минут.(Я думал о написании цикла с try-catch с
WAITFOR DELAY '00:15:00'
в блоке catch, как показано ниже) - (EDIT) Я не могу ничего изменить, кроме данных.
- (РЕДАКТИРОВАТЬ) Это простое обновление, заменяющее столбец внешнего ключа на другой существующий ключ.
Спасибо,
Фил
DECLARE
@AffectedRows int
SET @AffectedRows = 0
WHILE @AffectedRows < @RowsToUpdate
BEGIN
BEGIN TRY
BEGIN TRAN
-- Do some updates
SET @AffectedRows = @AffectedRows + @@RowCount
COMMIT TRAN
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
WAITFOR DELAY '00:15:00'
END CATCH
END
PRINT @AffectedRows