Sql-Server

SQL Server 2005 - 2005 之間的複制

  • February 27, 2014

我希望在 SQL Server 2005 複製問題上獲得一些幫助。簡而言之,在複製監視器(在發布者上)的“分發者到訂閱者歷史”選項卡上,我在“分發代理的會話”下看到兩行。一個執行良好,而第二個顯示操作消息“程序正在執行,正在等待來自伺服器的響應”。根據此查詢,我現在有 338694 個“可能”未傳遞的命令:

Select sum(UndelivCmdsInDistDB) FROM [distribution].[dbo].[MSdistribution_status];

但是 - 我只是在兩台伺服器上的一個複製表上執行了計數,並且它們都在現場。因此,我確實認為只需要殺死被掛起的特工。

塔米

PS Replication 於昨晚 10 點停止;我相信,當我今天早上在訂閱伺服器上暫停並重新啟動 SQL Server 代理時,第二個分發代理會話開始並通過將命令傳遞給訂閱伺服器來啟動。

PSS - 我也一直在努力嘗試為這種情況創建某種警報,對此有什麼想法嗎?

我找到了解決我的問題的方法。但請注意,下面概述的步驟破壞了正常複製(或者看起來如此)。儘管如此,我還是能夠執行複制,現在分發數據庫中沒有未傳遞的命令:

我命令你傳遞這些命令

那裡提供的解決方案是執行:

exec sp_changepublication
   @publication = 'xxxxx',
   @property = N'allow_anonymous', 
   @value = 'false'
exec sp_changepublication
   @publication = 'xxxxx',
   @property = N'immediate_sync',
   @value = 'false'

嘗試查看分發數據庫 MSdistribution_status 中的 SQL 傳遞視圖。它列出了 agent_id、article_id 以及 UndelivCmdsInDistDB(等待傳遞給訂閱者的命令數。)。您應該能夠加入 msDistribution_agents 和 msArticles 以將待處理的命令與確切的表/訂閱相匹配。您可能可以設置一個作業來監視 UndelivCmdsInDistDB 並在它超過門檻值時創建警報。

複製表 http://technet.microsoft.com/en-us/library/ms179855.aspx

引用自:https://dba.stackexchange.com/questions/59723