交易日志很大!但是选择了简单的恢复模式!

fru*_*rup 4 sql-server truncate transaction-log

我想知道:我们的 MS SQL Server 2012 上有一个数据库。恢复模式是“简单”的。

数据库本身大约有 2.7GB 大。我配置了 Trn-Log 的最大大小 (3GB)。

现在我用“重新组织索引任务”-->“更新统计”制定了一个维护计划。

奇怪的是,当我运行维护计划时,“简单”模式下的数据库日志会随着 3GB 的归档而增长,并且出现错误...

为什么即使在简单模式下也使用 Trn-Log?为什么 3 GB 似乎还不够?

dba*_*old 6

在简单恢复模式下,一旦事务完成,其日志记录就会被标记,以便它们可以被覆盖,但事务仍会写入日志。

没有办法阻止 SQL Server 写入事务日志。

这意味着如果日志的当前大小太小,大型事务仍然可以扩展日志。维护计划中的任务是在数据库中执行正在写入日志的操作,这会导致日志扩展、达到您设置的 3GB 限制并产生错误。

取消对日志大小的 3GB 限制,并确保您的日志所在的驱动器有足够的可用空间来扩展日志,或者(这是我推荐的)手动将日志文件扩展到一个大小避免自动增长。

最后,即使您的数据库很小,我也不建议使用维护计划。其中的任务并不“智能”,即使不需要它们也会执行操作。

例如,REBUILD INDEX 任务将执行索引重建,即使不需要(索引的碎片很少)。这将导致大量信息写入数据库的日志文件。

看看其他维护解决方案,我使用 Ola Hallengren 的脚本。
https://ola.hallengren.com/