共用方式為


MSSQL_ENG020598

訊息詳細資料

產品名稱

SQL Server

產品版本

10.50

產品組建編號

 

事件識別碼

20598

事件來源

MSSQLSERVER

元件

SQL Server Database Engine

符號名稱

訊息文字

套用複寫命令時,在訂閱者端找不到資料列。

說明

如果「散發代理程式」嘗試在「訂閱者」端更新資料列,但該資料列已刪除或其主索引鍵已變更,則會在交易式複寫中發生這項錯誤。依預設,交易式發行集的訂閱者應當成唯讀處理,因為變更並不會傳播回發行者。針對交易式複寫,只有在使用可更新訂閱或點對點複寫時,才應於「訂閱者」端進行使用者變更。如需這些選項的資訊,請參閱<交易式複寫的可更新訂閱>和<點對點交易式複寫>。

使用者動作

若要解決這個問題:

  1. 如果在您找到錯誤來源時複寫必須繼續進行,請指定「散發代理程式」的參數 -SkipErrors 20598。這可以讓代理程式略過導致錯誤 20598 的變更,同時允許複寫其他變更。如需詳細資訊,請參閱<略過交易式複寫中的錯誤>。

  2. 識別「訂閱者」端的哪些資料列已刪除,或擁有與「發行者」端對應的資料列不同的主索引鍵。您可以使用 tablediff 公用程式 判斷發行集和訂閱資料庫中不同的資料列。如需使用這個公用程式與複寫資料庫的資訊,請參閱<如何:比較複寫資料表的差異 (複寫程式設計)>。

  3. 在「訂閱者」端使用 tablediff 公用程式或其他方法更正資料列。

  4. (選擇性) 移除 -SkipErrors 參數。