在 SQL Server 2000 系统上,我有一个 templog.ldf 文件,该文件似乎无限增长!但是当我检查时,tempdb 中从来没有任何打开的事务(使用 DBCC OPENTRAN),我也没有在 tempdb 中使用显式事务。
但是,我确实在我的存储过程中使用了临时表。谁知道 ASP.NET 数据访问对象在幕后会做什么?该数据库支持一个 ASP.NET 网站。
无论如何,tempdb.mdf 文件——tempdb 数据文件——是相当合理的 700 MB。templog.ldf 文件一天可以增长到 30 GB!如果我没有用完磁盘空间,可能会更多。我没有明确删除存储过程中的#tables,但同样,mdf 文件似乎永远不会变得非常大。
为什么没有未完成的事务时事务日志会增长?事务日志是否会回收空间?此外,带有 NO_LOG 的 DUMP TRAN 不会收缩文件,CHECKPOINT 事件也不会通过 trunc 收缩。在 tempdb 上启用了登录 chkpt。停止 SQL Server 会清除 tempdb(可能 DBCC SHRINKFILE 会,但我没有这样做)。
谢谢你的帮助!