0

我可以在SQL Server數據庫服務器上的distributionmsdb數據庫中查找複製是否連續? (2005年和2008年)複製是否在任何地方連續可查詢?

背景: 我正在製作一個複製監視器系統,它會在X時間內未成功合併複製時通過電子郵件發出警報。爲此,我定期查詢distribution數據庫的MSreplication_monitordataMSmerge_sessions表。 要測試複製是否已經超過了警報的時候,我做的對MSreplication_monitordata每個條目下面看的時候,最後成功的複製是:

select top 1 end_time 
from MSmerge_sessions 
where runstatus=2 and [email protected] 
order by end_time desc 

runstatus = 2個過濾器「完整」僅狀態(see documentation

問題是,連續複製只有一個MSmerge_sessions條目持續更新end_time,但其狀態爲3,表示「正在進行」。我不能僅僅測試它,因爲那樣會返回非連續的複製會話,在完成之前可能會失敗。

我試着看看MSmerge_sessions.current_phase_id列可能是有用的,但它是無證的,我不能推斷它的意思。 我也試過msdb數據庫,因爲這是保存複製作業記錄的地方(在sysjobs表中)。 sysjobschedules表似乎很有希望,一些next_run_datenext_run_time字段爲0,但我無法找到如何鏈接到sysjobs

回答

0

好了,所以這是不太漂亮,比我希望的,但在這裏它是:

select 
    agent.*, 
    case when exists(
     select * 
     from msdb.dbo.sysjobsteps step 
     where agent.job_id=step.job_id 
     and step.step_id=2 
     and step.command like '%-Continuous%') 
     then 1 
     else 0 
    end as Continuous 
from distribution.dbo.MSmerge_agents agent 

this script,我不顧一切通過互聯網搜索發現推導出來。 這假定字符串匹配不區分大小寫。

如果任何人有更好/更漂亮/更漂亮的解決方案,我仍然會給予他們答案。

相關問題