我们在sql 2005服务器上有一个数据库,它设置为简单事务模式.日志记录设置为1 MB,并在需要时设置为增长10%.
我们一直遇到事务日志填满的问题,我们需要缩小它.什么可能导致事务日志在允许设置为简单且不受限制的增长时填满?
解决方法
即使在SIMPLE恢复模型中,也有一些事情可能导致日志不得不增长:
>长时间运行的事务 – 在事务提交或回滚之前无法清除日志.您可以使用DBCC OPENTRAN向您显示最早的活动事务.
>事务复制 – 在日志读取器作业读取已提交的事务之前,无法清除日志
sql 2000 SP4中还存在一个错误,导致检查点无法正确清除日志 – 有关详细信息,请参阅我的博客文章:Why won’t my log clear in SIMPLE recovery mode? SQL 2000 bug or very large VLFs.
我的猜测是你有一个长期的交易.
您不应该继续缩小日志 – 不断缩小和增长日志会导致称为VLF碎片的事情,这会影响性能.此外,每当日志增长时,它必须进行零初始化,这会导致所有内容在初始化发生时等待.让日志达到稳态大小并离开
查看我为TechNet杂志撰写的长篇文章,了解日志及其在各种恢复模型中的行为:Understanding Logging and Recovery in SQL Server.
希望这可以帮助!