我正在使用循环删除块中的许多行。
WHILE EXISTS (SELECT 1 FROM dbo.Table WHERE LogTime < CAST('2018-11-05' AS
DATE))
BEGIN
BEGIN TRANSactION T1
DELETE TOP (1000) FROM dbo.Table
WHERE LogTime < CAST('2018-11-05' AS date);
COMMIT;
END
我希望每个While循环周期都是一个以“ COMMIT”结尾的事务,因此,每个循环周期之后都会清除事务日志。
不幸的是,事实并非如此。在大约15分钟后的某个时间,查询由于“事务日志已满”而崩溃。然后开始回滚,不仅回滚最后一个循环,还回滚整个查询,包括所有其他循环。