首页 > 解决方案 > MSSQL 重复事务日志已满。需要知道是谁造成的

问题描述

MSSQL V18.7.1 数据库上的事务日志每小时备份一次。此数据库日志的大小是自动增长的,最大 128Mb 5Gb

这运行顺利,但有时我们的应用程序中确实出现错误:'数据库 Borculo 的事务日志已满,因为'LOG_BACKUP'

我们在上午 8 点 15 分收到这条消息,而在上午 8 点 15 分,日志备份已完成(并清空)。

如果我有一个脚本或命令来检查导致这种指数增长的原因,我会非常喜欢它。

我们可以更频繁地备份(每 30 分钟一次)或更改大小,但问题并没有解决。基本上,我们拥有的交易数量不应该出现这个问题。

可能某些任务正在运行(在我们的 ERP 中)导致了这种情况。

这不是每天都发生,但在上个月,这是第二次。

事务日志是从中获取信息的备份日志。不是主动的。

谁能指出我正确的方向?

谢谢

标签: sql-servertransactions

解决方案


每小时备份一次事务日志意味着在发生灾难时您可能会丢失多达一小时的数据。

通常建议您尽可能频繁地备份事务日志。

每 15 分钟通常是一个很好的起点。但如果它是业务关键型数据库,请考虑每分钟备份一次事务日志。

另外,为什么要限制事务日志文件的大小?如果磁盘上有更多可用空间,请允许文件在需要增长时增长。

事务日志文件可能已满,因为有一些维护任务正在运行(索引/统计维护等),并且因为日志文件没有备份整整一个小时,日志不会被截断一小时和文件大小达到 5GB。因此出现错误消息。

我会做的事情,来解决这个问题。

  1. 删除文件大小限制,或至少增加限制以使其大于 5 GB。

  2. 更频繁地备份事务日志,可能每 5 分钟一次。

  3. 将日志文件增长增量从 128MB 设置为至少 1 GB(以减少 VLF 的数量)

  4. 当日志文件已满时,密切监视服务器上正在运行的内容,这很可能是一项维护任务(或者可能是连接挂起错误)。

  5. 无需设置日志文件大小的最大限制,而是设置一些警报以在日志文件增长过多时通知您,这将使您能够在没有任何干扰甚至最终用户潜在停机时间的情况下调查问题。


推荐阅读