1

我们在 2 个 SQL Server 2005 标准版本之间设置了镜像。还有镜像警报设置如下: DB Mirroring (Connection with Mirror Lost) DB Mirroring (Connection with Principal Lost) DB Mirroring (Principal Running Exposed) DB Mirroring (Synchronizing Mirror) DB Mirroring (Synchronizing Principal) 镜像提交开销超过阈值 (MIRROR) 最旧的未发送事务超过阈值 (PRINCIPAL) 未恢复日志超过阈值 (MIRROR) 未发送日志超过阈值 (PRINCIPAL)

“最旧的未发送交易超过阈值”警报在最近几天内生成了很多次。但此警报并非专门针对数据库。这只是平均值。

我认为这些信息应该在一个表中,我发现它是 msdb.dbo.dbm_monitor_data 表。它包含 log_flush_rate 、send_queue_size、send_rate、redo_queue_size、redo_rate、transaction_delay 和 transactions_per_sec 等数据以及数据库名称。然后我想知道这个表是如何填充的。为此,我发现 SQL 服务器创建的镜像监控作业“数据库镜像监控作业”运行 sp sp_dbmmonitorupdate,它从镜像性能计数器填充此表。该作业每分钟运行一次。

例如,警报是在 11:23:52 生成的。这些作业每分钟只运行一次,但它仍然设法在 11:23:00 和 11:23:52(生成警报时)捕获数据,每分钟两次。

我想可能是,当警报生成时,它也会运行这个存储过程。如果它更新了表,那么我可以运行一个 select 语句。但是我怎么能确定呢?

问题:我怎样才能找出为什么这个表没有按计划更新?是什么触发了它的人口?有谁知道哪个表保存警报历史数据?

注意:没有重建索引作业正在运行,并且已按照以下屏幕截图设置镜像阈值: 替代文字

有人可以帮忙吗?

提前致谢

4

1 回答 1

0

答案: sp_dbmmonitorupdate 引发错误,进而引发警报并因此填充表。我挖掘了所有镜像存储过程和表来找到它。:-)

于 2010-08-26T22:19:09.780 回答