我已经在我所有的数据库服务器上设置了警报,每隔一段时间我就会收到以下错误,有时它会不断出现,有时会出现几次。
The SQL Server performance counter 'Log Growths' (instance '_Total') of object 'SQLServer:Databases' now equals the threshold of 1.00.
我可以更改任何配置来阻止这种情况吗?它似乎只来自两台服务器。
我已经在我所有的数据库服务器上设置了警报,每隔一段时间我就会收到以下错误,有时它会不断出现,有时会出现几次。
The SQL Server performance counter 'Log Growths' (instance '_Total') of object 'SQLServer:Databases' now equals the threshold of 1.00.
我可以更改任何配置来阻止这种情况吗?它似乎只来自两台服务器。
这告诉您一个或多个事务日志重复增长,这意味着它被设置为 FULL 或 BULK LOGGED 恢复模式,没有事务日志备份或事务日志备份不足,或者有人写了一个非常糟糕或很长的查询来保留事务日志积极的。
您应该查找该服务器上的所有完整恢复模型数据库,以及最后一次首先进行事务日志备份的时间,因为这是最危险的。假设没有设置最大大小,tlog 可能会增长到占用所有磁盘的位置,从而停止向该数据库或该磁盘上包含数据或日志的任何其他数据库的所有写入。如果没有,向前移动,您可能需要设置一个最大大小,这样 1 DB 就不会删除所有 DB tlog。
看看有没有满的?如果是这样,最后一次事务日志备份是什么时候?这是一个可以帮助您的脚本:
如果这没有给你你需要的信息,这里有一种方法可以从 msdn 中找到运行时间最长的前 10 个事务:
最后,一旦您看到哪个数据库的日志文件不断增长,您就可以看到是什么让日志文件保持打开状态。它甚至可能类似于复制设置或其他未完全删除的 HA 解决方案。这会告诉你:
这不是错误。它只是一个日志文件,它太小并且启用了自动增长。这意味着当有事务运行时,sql server 进程必须扩展日志文件。扩展日志文件是一个单线程过程,每个必须在事务日志中写入内容的事务都必须等待。不:没有 IFI - 你必须等待 sql server 将所有零写入磁盘。
幸运的是,您可以查询有关所有收缩和增长事件的标准跟踪。从sqlblog.com修改日志收缩/增长事件: