Sign in with Microsoft
Sign in or create an account.

本文說明如何疑難排解錯誤 20598 「 資料列已找不到 「 訂閱者 」 套用複寫的命令時 「 交易式複寫中。

如何疑難排解

如果要疑難排解這個問題,請依照下列步驟執行︰

  1. 在複寫監視器] 上的 「 訂閱者 」 的散發代理程式 」,擷取該交易序號,命令遇到錯誤的識別碼︰



    注意您可以使用下列查詢從散發者 」 伺服器的檔案,以取得相同的交易順序編號︰

  2. 擷取對應到 「 散發者 」 伺服器上的交易順序編號的命令。此命令,做為參數使用交易順序編號,從步驟 1:

  3. 從步驟 2] 的輸出,識別使用步驟 1 中的命令 ID 失敗的命令。參考command_id資料行,在結果集中。

  4. 驗證在 「 發行者 」 的文件資訊。使用您在步驟 2,取得發行項識別碼,並檢查您想要更新的發行項的詳細資料︰

  5. 驗證在 「 發行者 」 的主索引鍵。

    您有兩項資訊︰ 您想要執行更新和主索引鍵值的資料表。您可以使用主索引鍵值,查詢的資料表,並在 「 發行者 」 資料庫中尋找的資料列。例如︰

    選取 * tbl_sample 從何處 column_name = <primary_key_value>

  6. 請檢查 「 訂閱者 」 問題。

    在 「 訂閱者 」 資料庫中,執行相同的查詢,並與您收到來自 「 發行者 」 資料庫的結果做比較。

因應措施

若要解決這個問題,請使用下列兩種方法︰

  • 「 訂閱者 」 時,手動插入遺失的資料列。這可能會啟用重試失敗的命令,並繼續發展複寫 「 散發代理程式。

    注意可能有其他的資料列不存在,那有什麼手動插入 「 訂閱者 」 是否有更多的失敗。

  • 指示 「 散發代理程式,略過這個錯誤並繼續複製其餘部分所做的變更。散發代理程式會接受skiperrors參數。您可以使用這個參數來傳遞錯誤碼 20598。雖然您等待手動同步處理遺失的資料列的機會,如此可能保留複寫設定不變。

    附註您必須仔細評估參考完整性的下游的效果,並在繼續前都存在於受影響的資料表的觸發程序。

更多的資訊

若要調查這個問題的原因的資料收集

如果重複發生這個問題,您應該收集下列資料以供分析 「 Microsoft SQL Server 支援小組,讓他們可以試著找出問題的原因︰

  • 發生這個問題時,散發資料庫的備份。(這應該是會報告錯誤之後,重新初始化訂閱之前)。

  • 「 發行者 」 和 「 訂閱者 」 的交易記錄檔備份。(這些應該為至少導致問題的時間 24 小時)。

  • 顯示在 「 發行者 」、 「 訂閱者 」 和 「 散發者 」 的複寫代理程式活動的 profiler 追蹤。(請確定該甚至在問題開始之前,正在執行的程式碼剖析工具。在理想的情況下,您想重新索引工作開始時間為啟動的程式碼剖析工具大約在同一時間)。

  • 從上述的五個步驟,對於識別受影響的資料表和主索引鍵值遺失輸出

  • 從 「 發行者 」 和 「 訂閱者 」 資料庫的類別目錄檢視的輸出︰

    • sys.partitions

    • sys.allocation_units

    • sys.objects

  • 複寫代理程式記錄檔的詳細資訊輸出

所解決的已知的問題

在舊版的 SQL Server,就會發生下列問題︰

狀態

Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。

參考

如需有關軟體更新術語的詳細資訊,請參閱用來描述 Microsoft 軟體更新標準術語的描述

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?

感謝您的意見反應!

×