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