我在SQL Server中有一个需要更新5000万条记录的更新查询,但是当我执行此查询时,我的数据库日志文件增长到100GB并因磁盘已满而停止。
如何防止日志文件增长?
答案 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