共用方式為


MSSQL_ENG020598

適用於:SQL Server Azure SQL 受控執行個體

訊息詳細數據

屬性
產品名稱 SQL Server
事件識別碼 20598
事件來源 MSSQLSERVER
元件 SQL Server Database Engine
符號名稱
訊息文字 套用複寫命令時,在訂閱者端找不到資料列。

說明

如果 散發代理程式 嘗試更新訂閱者端的數據列,但數據列已刪除或數據列的主鍵已變更,則事務複製中就會引發此錯誤。 依預設,交易式發行集的訂閱者應當成唯讀處理,因為變更並不會傳播回發行者。 針對事務複製,只有在使用可更新的訂閱或點對點複寫時,才應在訂閱者端進行用戶變更。 如需這些選項的相關信息,請參閱 事務複製點對點事務複製的可更新訂閱。

使用者動作

若要解決此問題:

  1. 如果您在識別錯誤來源時必須繼續復寫,請為 散發代理程式 指定參數 -SkipErrors 20598。 這可讓代理程式略過導致錯誤 20598 的變更,同時允許複寫其他變更。

  2. 識別訂閱者端的數據列已刪除或主鍵與發行者端對應數據列不同的主鍵。 您可以使用 tablediff 公用程式 來判斷發行集和訂閱資料庫中哪些數據列不同。 如需搭配復寫資料庫使用此公用程式的詳細資訊,請參閱比較復寫數據表的差異(複寫程序設計)。

  3. 使用 tablediff 公用程式或其他方法更正訂閱者端的數據列。

  4. (選擇性) 拿掉 -SkipErrors 參數。