为什么在WHILE循环的每次迭代中提交事务都不会阻止事务日志的增长?

时间:2015-01-15 08:15:18

标签: sql tsql transactions transaction-log

我正在尝试从数据库表中删除数百万条记录。

我使用了WHILE循环,以便在每次迭代中删除TOP 25000行并提交它们。

我的假设是,如果我删除部分行并在每次迭代中提交,我会阻止事务日志增长。

我做了类似下面的事情

WHILE (1=1)
BEGIN

-- Logic to BREAK the loop like if no rows left to delete
IF ...
  BEGIN TRANSACTION
   DELETE TOP 25000
   FROM FooBar
   Where SomeDate<AnotherDate
  COMMIT

END

但是我结束了' 数据库'FooBar'的事务日志已满。 '

我应该怎么做以防止事务日志长大? -Committing不删除它?

1 个答案:

答案 0 :(得分:0)

提交事务写入日志,因为当您按日志还原数据库时,它将从已提交的事务中恢复。