SQL Server 2008:镜像:数据库级的阈值警报

我已经完成的testing似乎表明,需要为<all databases>数据库名称而不是单个指定的数据库定义以下阈值警报

  • 未发送日志阈值(错误消息32042)
  • 最旧的未发送事务阈值(错误消息32040)
  • 未重新设置的日志阈值(错误消息32043)
  • 镜像提交开销阈值(错误消息32044)

这与微软提供的文档相反:

我已经确认错误编号32040,32042,32043和32044正在写入到SQL Server日志,按照sp_altermessage

 /* Unsent Log Threshold (http://msdn.microsoft.com/en-us/library/aa337325.aspx) */ sp_altermessage 32042, 'WITH_LOG', TRUE 

如果您成功了,我将不胜感激,如果您描述您为单个数据库发生阈值警报的操作

谢谢。

我假设根据您的列表,当您select所有数据库时警报正在触发,但在select特定数据库时不会触发。

数据库监视SQL Agent作业的stream程如下所示:

  1. 定期执行sys.dbmonitorupdate(例如 – 每分钟一次)。 此调用执行以下操作:
  2. 从sys.dm_os_performance_counters中检索值
  3. 插入msdb.dbo.dbm_monitor_data
  4. 达到阈值时,会出现错误
  5. 关于警报,它可能不会触发,因为sp_dbmmonitorupdate位于msdb的上下文中。 所以你不会为个人数据库着火,但你会为所有的数据库。

我不知道这是普遍的行为,还是后来修正的 – 但我确实看到了这种情况。 所以,如果这描述了你的情况,而不想使用“所有数据库” – 那么你需要写自己的检测程序和工作来解决这个问题(也可能是其他的解决scheme – 但是你没有选项来改变上述的系统存储过程,并仍然支持)。