トランザクション レプリケーションのエラー 20598 のトラブルシューティング
この記事では、トランザクション レプリケーションでエラー 20598 のトラブルシューティングを行う方法と、問題の回避策について説明します。
元の製品バージョン: SQL Server
元の KB 番号: 3066750
トラブルシューティング
この問題をトラブルシューティングするには、次の手順に従います。
サブスクライバーのディストリビューション エージェント上のレプリケーション モニターで、エラーが発生したトランザクション シーケンス番号とコマンド ID を抽出します。
注:
次のクエリを使用して、ディストリビューター サーバーから同じトランザクション シーケンス番号を取得できます。
ディストリビューター サーバー上のトランザクション シーケンス番号にマップされるコマンドを抽出します。 このコマンドのパラメーターとして、手順 1 のトランザクション シーケンス番号を使用します。
手順 2 の出力から、手順 1 のコマンド ID を使用して失敗しているコマンドを特定します。 結果セットの
command_id
列を参照してください。発行元に関する記事情報を検証します。 手順 2 から取得したアーティクル ID を使用し、更新しようとしている記事の詳細をチェックします。
発行元の主キーを検証します。
更新を実行しようとしているテーブルと主キーの値の 2 つの情報があります。 主キーの値を使用してテーブルにクエリを実行し、パブリッシャー データベース上の行を見つけることができます。 例:
SELECT * FROM tbl_sample WHERE column_name = <primary_key_value>
サブスクライバーで問題を確認します。
サブスクライバー データベースで同じクエリを実行し、パブリッシャー データベースから受け取った結果と比較します。
回避策
この問題を回避するには、次の 2 つの方法を使用します。
欠落している行をサブスクライバーに手動で挿入します。 これにより、ディストリビューション エージェントが失敗したコマンドを再試行し、レプリケーションを進める可能性があります。
注:
エラーが増える場合は、サブスクライバーに手動で挿入する必要がある行が他に存在する可能性があります。
このエラーをスキップし、残りの変更をレプリケートし続けるようディストリビューション エージェントに指示します。 ディストリビューション エージェントは パラメーターを
skiperrors
受け入れます。 このパラメーターを使用して、エラー コード 20598 を渡すことができます。 これにより、不足している行を手動で同期する機会を待つ間、レプリケーションのセットアップはそのまま維持される場合があります。注:
続行する前に、参照整合性のダウンストリームの影響と、影響を受けるテーブルに存在するトリガーを慎重に評価する必要があります。
この問題の原因を調査するためのデータ収集
この問題が繰り返し発生する場合は、Microsoft SQL Server サポート チームが問題の原因を特定できるように、分析のために次のデータを収集する必要があります。
この問題が発生した場合のディストリビューション データベースのバックアップ。 (これは、エラーが報告された後、サブスクリプションが再初期化される前に行う必要があります)。
パブリッシャーとサブスクライバーのトランザクション ログ バックアップ。 (問題が発生した時刻より少なくとも 24 時間前にデータを収集します。
パブリッシャー、サブスクライバー、ディストリビューター上のレプリケーション エージェントのアクティビティを示すプロファイラー トレース。 (問題が発生する前にプロファイラーが実行されていることを確認します。理想的には、再インデックス ジョブの開始時刻と同じ時間にプロファイラーを起動する必要があります)。
影響を受けるテーブルと欠落している主キー値を識別するための前の 5 つの手順からの出力。
パブリッシャー データベースとサブスクライバー データベースの両方からのカタログ ビューの出力:
- sys.partition
- sys.allocation_units
- Sys.objects
レプリケーション エージェント ログの詳細出力。
対処される既知の問題
古いバージョンのSQL Serverでは、次の問題が発生します。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示