在我的应用程序中,在恢复后,我对新创建的数据库执行了许多(>100,000,000)次更新。因此,日志文件会增长显著地。
我怎样才能阻止它生长?
注意:将恢复模型设置为简单是行不通的。
此外,这个问题最初发布在这里:https://stackoverflow.com/questions/4400057/how-to-stop-log-file-from-growing-in-sql-server-2008
答案1
您能否将恢复模型更改为简单,并延长到足以执行缩减的时间,然后再将恢复模型设置回来?
就像是:
alter database <mydb> set recovery simple
go
checkpoint
go
alter database <mydb> set recovery full
go
backup database pubs to disk = 'c:\mydb.bak' with init
go
dbcc shrinkfile (N'mydb_log' , 1)
go
我承认我借用了http://sql-server-performance.com/Community/forums/p/28345/151682.aspx
该链接还链接到:http://madhuottapalam.blogspot.com/2008/05/faq-how-to-truncate-and-shrink.html
答案2
你需要:
- 切换到简单恢复模式或更频繁地备份事务日志
- 使用循环机制以较小的批次应用更新。
答案3
答案4
我想到的一件事是,你可以利用批量更新来插入/更新这 1 亿条记录。请参阅以下信息MSDN 上的讨论使用最少的日志记录和批量更新。