我们在2个SQL Server 2005标准版之间设置了镜像。 还有镜像警报设置如下: 数据库镜像(镜像丢失连接) 数据库镜像(与主体丢失的连接) DB镜像(主要运行暴露) 数据库镜像(同步镜像) 数据库镜像(同步主体) 镜像提交开销超过阈值(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 Server创建的“数据库镜像监视器作业”的镜像监视作业运行sp sp_dbmmonitorupdate,该镜像从镜像perfmon计数器填充此表。这项工作每分钟都有一次。
警报是在11:23:52生成的。 这些作业每分钟只运行一次,但仍设法在11:23:00然后在11:23:52(生成警报时)捕获数据,这是一分钟两次。
我认为可能是,当生成警报时,它也会运行此存储过程。如果它更新了表,那么我可以运行一个select语句。但我怎么能确定?
问题: 我怎样才能找出为什么这张表没有计划更新?什么引发了人口?有谁知道哪个表包含警报历史数据?
注意:没有正在运行的重建索引作业,并且已设置镜像阈值,如以下屏幕截图所示:
有人可以帮忙吗?
提前致谢
答案 0 :(得分:0)
答案:sp_dbmmonitorupdate会引发错误,从而引发警报,从而填充表格。我挖掘了所有镜像存储过程和表来找到它。 : - )