在SQL Server 2000系统上,我有一个似乎无限制增长的templog.ldf文件!但是当我检查时,tempdb中没有任何打开的事务(使用DBCC OPENTRAN),也没有在tempdb中使用显式事务。
但是,我确实在我的存储过程中使用临时表。谁知道ASP.NET数据访问对象可能在幕后做什么?数据库支持ASP.NET网站。无论如何,tempdb.mdf文件 - tempdb数据文件 - 是一个非常合理的700 MB。 templog.ldf文件一天可以增长到30 GB!如果我没有耗尽磁盘空间,可能会更多。我没有明确地删除存储过程中的#tables,但同样,mdf文件似乎永远不会变得非常大。
为什么没有未完成的交易时事务日志会增长?事务日志是否会回收空间?此外,DUMP TRAN WITH NO_LOG不会缩小文件,也不会通过trunc收集CHECKPOINT事件。在tempdb上启用了登录chkpt。停止SQL Server会清除tempdb(可能是DBCC SHRINKFILE,但我还没有这样做)。
感谢您的帮助!
答案 0 :(得分:2)
阅读这些:
截断交易记录
注意:日志截断总是发生在tempdb中的检查点上。
http://technet.microsoft.com/en-us/library/aa174538(SQL.80).aspx
优化tempdb性能
http://technet.microsoft.com/en-us/library/aa178421(SQL.80).aspx
我的templog.ldf很大(45gb),如果我该怎么办? https://serverfault.com/questions/61479/my-templog-ldf-is-huge-45gb-what-if-anything-should-i-do