我可以在 SQL Server 数据库服务器上的数据库中的distribution
某处找到复制是否是连续的?msdb
(2005 年和 2008 年)
背景:我正在制作一个复制监控系统,当复制在 X 时间内没有成功合并时,它会发出警报(通过电子邮件)。为此,我定期查询distribution
数据库MSreplication_monitordata
和MSmerge_sessions
表。为了测试复制是否超过了警报时间,我对每个条目执行以下操作,MSreplication_monitordata
以查看上次成功复制的时间:
select top 1 end_time
from MSmerge_sessions
where runstatus=2 and agent_id=@AgentId
order by end_time desc
runstatus=2 过滤器仅用于“完成”状态(请参阅文档)
问题是连续复制只有一个MSmerge_sessions
条目不断更新其 end_time,但其状态也为 3,这意味着“正在进行”。我不能只测试那个,因为这会返回非连续复制会话,这些会话可能在完成之前失败。
我尝试查看该MSmerge_sessions.current_phase_id
列是否有用,但它没有记录,我无法推断它的含义。我也尝试过msdb
数据库,因为这是保存复制作业记录的地方(在sysjobs
表中)。该sysjobschedules
表看起来很有希望,其中一些next_run_date
和next_run_time
字段为 0,但我不知道如何将其链接到sysjobs
.