Я пытаюсь удалить большое количество строк из таблицы и не допустить одновременного создания слишком большого журнала транзакций. Похоже, что большинство людей в Интернете рекомендуют использовать заявление BEGIN TRAN / COMMIT TRAN. Я не очень разбираюсь в SQL, поэтому я просто попытался перевести phseudocode в ms sql (SQL Server 2005). Вот код:
set rowcount 1000
while (1=1)
BEGIN
with MonthEndDates as (
select max(Rundate) MonthEnd
from table3
group by convert(varchar(6), RunDate, 112))
begin transaction T1
delete from table1 where
table2id in
(select table2id from table2 where
table3id in
(select table3id from table3
where RunDate < getdate()-30
and RunDate not in (select MonthEnd from MonthEndDates)))
commit transaction T1
if @@rowcount = 0
break
END
set rowcount 0
Я все правильно делаю? Если да, почему я получаю эту ошибку: Неверный синтаксис рядом с ключевым словом «начало». Я также попытался удалить метки транзакции, но это не помогло
Как я уже сказал, я не очень хорош в SQL, поэтому любая помощь будет признательна
Спасибо