我正在尝试从数据库表中删除数百万条记录。
我使用了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不删除它?
答案 0 :(得分:0)
提交事务写入日志,因为当您按日志还原数据库时,它将从已提交的事务中恢复。