症狀
假設你使用 Microsoft SQL Server 2012 服務包 2 (SP2) 合併複寫。 當你在發佈者執行 sp_mergemetadataretentioncleanup 來清理元資料時,即使所有訂閱者最近都成功同步,元資料也無法被移除。 在這種情況下,由於中繼資料過多,同步時間可能會大幅增加。
注意:last_local_recguid欄有空值,或是某些訂閱者在發行端的 sysmergesubscriptions 表格last_local_recgen欄有舊世代。
原因
此問題是因為某些變更是為了降低合併元資料清理程序中不收斂的可能性而引入。 為達成此目標,清理程序會驗證哪些世代仍可能活躍,以避免它們被刪除後再由不常同步的訂閱者重新引入的情況。 此偵測機制可能會排除部分世代,即使它們已不再在保留期內。 在某些情況下,這可能會增加中繼資料表的大小。
解決方式
此問題首次在 SQL Server 的累積更新中被修正。
2014 SQL Server SP1 累積更新 1 /en-us/help/3067839
2012 SQL Server SP2 的累積更新 4 /en-us/help/3007556
關於 SQL Server 的累積更新
每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 請查看 SQL Server 的最新累積更新:
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。