CHECKPOINT并以完全恢复模式SQL Server更新批量数据时开始/提交事务

时间:2014-04-02 16:36:06

标签: sql-server tsql

我正在使用一个程序更新两个大表。我想知道如何管理提交事务/检查点,以便最大限度地减少事务日志的风险。 数据库是SQL Server 2005,恢复模式已满。 这是我的示例代码。

create procedure procedure_name 
as
declare @CNT INT;
set @CNT=1;

BEGIN trans 
while  @CNT>0
update top (50000) table_a
where condition
set @CNT=@@rowcount

checkpoint
end;

set @cnt=@@rowcount
while  @CNT>0
update top (50000) table_a
where condition
set @CNT=@@rowcount
checkpoint
end;

commit transaction

1 个答案:

答案 0 :(得分:0)

存在日志记录的众多原因之一是,如果您不想将事务提交到磁盘,则可以帮助您回滚事务。启动一个事务,在中间添加一个检查点,然后提出我怀疑将有助于你的事业。

请仔细阅读这些涵盖您查询的帖子。如果您不需要时间点恢复,请更改为简单恢复模型?插入后执行完整备份,如果这是一次性的?

Why Does the Transaction Log Keep Growing or Run Out of Space?

How to shrink the SQL Server log

How do checkpoints work