SQL Server 2005打了SP3補丁后復制出錯的解決方法(錯誤號: MSSQL_REPL-2147201001)
本來,我們內網的一個數據庫群集和外網的一個數據庫群集是通過網閘聯通的,并分別在兩個數據庫群集上做了復制用來同步數據,雖然有時會出現一些小問題,但總體上工作還算正常。這兩天,分別給內外網數據庫群集打了SP3補丁后,奇怪的問題發生了,無論在哪個數據庫群集上新建發布,在另外一個數據庫群集上訂閱都會有問題,用復制監視器查看詳細情況,報如下的錯誤消息:合并進程無法將快照傳遞給訂閱服務器。如果使用 Web 同步,則合并進程可能還無法創建或寫入消息文件。進行故障排除時,請使用詳細的歷史日志記錄來重新啟動同步,并指定要寫入的輸出文件。(源: MSSQL_REPL,錯誤號: MSSQL_REPL-2147201001) 獲取幫助: http://help/MSSQL_REPL-2147201001
CREATE UNIQUE INDEX 語句終止,因為發現對象名稱 'dbo.MSmerge_genhistory_27e6bd8f0dd44e0b900be709cb548dfd' 和索引名稱 'c2MSmerge_genhistory_27e6bd8f0dd44e0b900be709cb548dfd' 有重復的鍵。重復的鍵值為 (1)。(源: MSSQLServer,錯誤號: 1505) 獲取幫助:http://help/1505
在網上搜索了半天,解決這方面問題的方法太少了,連MSDN和Technet上介紹的也不多,最后沒有辦法只好求助微軟專家。專家讓我們使用SQL Server Profiler工具建一個跟蹤,將同步時報的錯誤記錄下來,發給他們進行分析,最后專家指出原因可能是打了SP3補丁后,在一些系統表中記錄的一些復制信息可能被修改了,新建訂閱時又做了一次重復插入,導致沖突所致,專家提供了一些SQL語句,刪除了一些冗余信息后就好了,這些系統表有MSmerge_genhistory和sysmergepublications,有興趣的朋友可以研究一下。