徵狀
假設您使用的是在 Microsoft SQL Server 2012 或 SQL Server 2012 Service Pack 1 (SP1)上執行發佈程式的合併複製。 將發行者升級至 SQL Server 2012 Service Pack 2 (SP2)之後,您就無法重新開機合併代理程式。 此外,您會收到下列錯誤:
合併進程無法在資料庫 ' MergePub」中執行保留式中繼資料清除。 如果繼續發生此問題,請嘗試增加此處理程式的查詢超時,或嘗試減少保留期間。 疑難排解時,請使用詳細的記錄記錄來重新開機同步處理,並指定要寫入的輸出檔案。
當您在發行者上手動執行 sp_mergemetadataretentioncleanup 的儲存程式時,該儲存程式會失敗,而且您會收到下列錯誤:
Msg 206、Level 16、State 2、程式 sp_mergemetadataretentioncleanup、行63Operand 類型衝突: Bigint 與 uniqueidentifierMsg 206、Level 16、State 2、程式 sp_mergemetadataretentioncleanup、Line 65Operand 類型衝突: int 與 uniqueidentifier 不相容
解決方案
此問題最初是在 SQL Server 的後續累積更新中修正。
SQL Server 2012 SP2 累積更新3 /en-us/help/3002049
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:
因應措施
若要解決此問題,請在已發佈的資料庫上執行下列查詢:if exists (select * from sys.columns sc inner join sys.types st on sc.system_type_id = st.system_type_id where object_id = object_id('dbo.sysmergesubscriptions') and sc.name = 'last_local_recgen' and st.name = 'uniqueidentifier') begin alter table dbo.sysmergesubscriptions drop column last_local_recgen alter table dbo.sysmergesubscriptions add last_local_recgen bigint null end
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。