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