SQL 数据库上的事务日志填充设置为简单

Wil*_*ill 4 sql-server sql-server-2005

我们在设置为简单事务模式的 SQL 2005 服务器上有一个数据库。日志记录设置为 1 MB,并设置为在需要时增加 10%。

我们不断遇到事务日志填满的问题,我们需要缩小它。当事务日志设置为“简单且不受限制的增长”时,什么会导致事务日志填满?

Pau*_*dal 7

即使在 SIMPLE 恢复模型中,也有一些事情会导致日志必须增长:

  • 长时间运行的事务 - 在事务提交或回滚之前无法清除日志。您可以使用DBCC OPENTRAN来显示最旧的活动事务。
  • 事务复制 - 在日志读取器作业读取已提交的事务之前无法清除日志

SQL 2000 SP4 中还有一个错误,它阻止检查点正确清除日志 - 请参阅我的博客文章了解更多详细信息:为什么我的日志在 SIMPLE 恢复模式下不能清除?SQL 2000 错误或非常大的 VLF

我的猜测是你有一个长期运行的事务。

您不需要不断缩小日志 - 不断缩小和增长日志会导致称为 VLF 碎片的事情,这会影响性能。此外,每当日志增长时,它必须被零初始化,这会导致在初始化发生时一切都在等待。让日志达到稳态大小并离开

查看我为 TechNet 杂志撰写的关于了解日志及其在各种恢复模型中的行为方式的长篇文章:了解 SQL Server 中的日志记录和恢复

希望这可以帮助!