Sql-Server

添加了新訂閱者但複製不起作用

  • April 10, 2019

我有一個包含一個發布者和 5 到 6 個訂閱者的合併複製設置。我們為此複製添加了一個額外的訂閱者,當我們嘗試同步時,它給出了以下錯誤。

錯誤資訊

合併程序無法將快照傳送到訂閱伺服器。如果使用 Web 同步,則合併過程可能無法創建或寫入消息文件。進行故障排除時,使用詳細歷史記錄重新啟動同步並指定要寫入的輸出文件。(來源:MSSQL_REPL,錯誤號:MSSQL_REPL-2147201001)

CREATE UNIQUE INDEX 語句終止,因為為對象名稱“dbo.MSmerge_genhistory_75711cc468114cd2ad98d5573a252083”和索引名稱“c2MSmerge_genhistory_75711cc468114cd2ad98d5573a252083”找到重複鍵。重複鍵值為 (1334936)。(來源:MSSQLServer,錯誤號:1505)

為解決問題而執行的操作

我嘗試了以下操作,但無助於解決問題。

  • 創建了新快照,但沒有用。
  • 更改了具有詳細歷史記錄/大查詢超時的代理配置文件,但仍然無效。
  • 我在表格中發現一個重複的條目,dbo.MSmerge_genhistory帶有generation=1334936. 我刪除了一個條目並嘗試同步,但它仍然無法正常工作。然後我刪除了這兩個條目並將它們保存在備份表中並嘗試同步,但再次出現同樣的錯誤。

請建議做什麼。

添加評論答案作為答案

解決方案是從MSmerge_genhistory表中刪除重複記錄之一,然後重新執行快照代理以生成新快照。

這是因為快照是一系列帶有導出數據的平面文件。從數據庫中刪除重複條目不會將其從快照文件中刪除,只有重新生成快照才會這樣做。

另一種可能的選擇是先清理合併元數據,然後生成快照。

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