徵狀
假設您使用的是 Microsoft SQL Server 2012 Service Pack 2 (SP2)合併複製。 當您在發佈伺服器上執行 sp_mergemetadataretentioncleanup 清除中繼資料時,即使所有訂閱者都已順利進行同步處理,仍無法移除中繼資料。 在這種情況下,同步處理時間可能會因為過度中繼資料而顯著增加。注意: [ Last_local_recguid ] 資料行中有 null 值,或在 publisher 端的sysmergesubscriptions資料表中有一些訂閱者的last_local_recgen欄中有舊代。
原因
之所以會發生這個問題,是因為引入了一些變更,以減少合併中繼資料清除程式中不收斂的可能性。 若要達到這個目的,清除程式會驗證哪些世代仍在使用中,以避免刪除它們的情況,然後透過不經常同步處理的訂閱者來重新引入它們。 此偵測機制可能會將部分代從清除清單中排除,即使它們已不在保留期間中也一樣。 在某些情況下,這可能會增加中繼資料表的大小。
解決方案
這個問題首先是在 SQL Server 的下列累積更新中修正。
SQL Server 2014 SP1 的累積更新1 /en-us/help/3067839
SQL Server 2012 SP2 累積更新4 /en-us/help/3007556
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。