如何在更新数百万条记录时阻止SQL Server中的日志增长,而不是插入

时间:2015-11-17 12:17:11

标签: sql-server logfile

我在SQL Server中有一个需要更新5000万条记录的更新查询,但是当我执行此查询时,我的数据库日志文件增长到100GB并因磁盘已满而停止。

如何防止日志文件增长?

2 个答案:

答案 0 :(得分:1)

嗯。您可以确定数据库的recovery model设置为" SIMPLE"。然后你可以批量进行更新。

即使使用SIMPLE恢复模式,仍会记录更新。但是,每次交易后都会删除日志记录。

答案 1 :(得分:1)

我找到了解决问题的方法,但我不确定它是最佳还是优化方式。解决方案是:将更新记录拆分为较低的计数批次。我使用带有一个wile循环的10000条记录的批处理。

    DECLARE @batchNum int; set @batchNum= 10000;
    DECLARE @ind int; select @ind=MIN(Isn_Num) from PURCHASE_INVOICE_D07F088L1;      
    DECLARE @maxind int; select @maxind=max(Isn_Num) from PURCHASE_INVOICE_D07F088L1; 

    while @ind<=@maxind
    begin
    --update query

        set @ind=@ind+@batchNum 
    end