MSSQL_ENG020598
適用於:SQL Server Azure SQL 受控執行個體
訊息詳細數據
屬性 | 值 |
---|---|
產品名稱 | SQL Server |
事件識別碼 | 20598 |
事件來源 | MSSQLSERVER |
元件 | SQL Server Database Engine |
符號名稱 | |
訊息文字 | 套用複寫命令時,在訂閱者端找不到資料列。 |
說明
如果 散發代理程式 嘗試更新訂閱者端的數據列,但數據列已刪除或數據列的主鍵已變更,則事務複製中就會引發此錯誤。 依預設,交易式發行集的訂閱者應當成唯讀處理,因為變更並不會傳播回發行者。 針對事務複製,只有在使用可更新的訂閱或點對點複寫時,才應在訂閱者端進行用戶變更。 如需這些選項的相關信息,請參閱 事務複製 和 點對點事務複製的可更新訂閱。
使用者動作
若要解決此問題:
如果您在識別錯誤來源時必須繼續復寫,請為 散發代理程式 指定參數 -SkipErrors 20598。 這可讓代理程式略過導致錯誤 20598 的變更,同時允許複寫其他變更。
識別訂閱者端的數據列已刪除或主鍵與發行者端對應數據列不同的主鍵。 您可以使用 tablediff 公用程式 來判斷發行集和訂閱資料庫中哪些數據列不同。 如需搭配復寫資料庫使用此公用程式的詳細資訊,請參閱比較復寫數據表的差異(複寫程序設計)。
使用 tablediff 公用程式或其他方法更正訂閱者端的數據列。
(選擇性) 拿掉 -SkipErrors 參數。