我正在使用一个程序更新两个大表。我想知道如何管理提交事务/检查点,以便最大限度地减少事务日志的风险。 数据库是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
答案 0 :(得分:0)
存在日志记录的众多原因之一是,如果您不想将事务提交到磁盘,则可以帮助您回滚事务。启动一个事务,在中间添加一个检查点,然后提出我怀疑将有助于你的事业。
请仔细阅读这些涵盖您查询的帖子。如果您不需要时间点恢复,请更改为简单恢复模型?插入后执行完整备份,如果这是一次性的?
Why Does the Transaction Log Keep Growing or Run Out of Space?