次の方法で共有


MSSQL_ENG020598

メッセージの詳細

製品名 SQL Server
イベント ID 20598
イベント元 MSSQLSERVER
コンポーネント SQL Server データベース エンジン
シンボル名
メッセージ テキスト レプリケートされたコマンドを適用するときに、サブスクライバーで行が見つかりませんでした。

説明

このエラーは、ディストリビューション エージェントがサブスクライバーの行を更新しようとしたが、行が削除されたか、行の主キーが変更された場合に、トランザクション レプリケーションで発生します。 変更はパブリッシャーに反映されないため、既定では、トランザクション パブリケーションへのサブスクライバーは読み取り専用として扱う必要があります。 トランザクション レプリケーションでは、更新可能なサブスクリプションまたはピア ツー ピア レプリケーションが使用されている場合にのみ、サブスクライバーでユーザー変更を行う必要があります。 これらのオプションの詳細については、「トランザクション レプリケーションとピア ツー ピア トランザクションレプリケーションの更新可能なサブスクリプション」を参照してください。

ユーザー操作

この問題を解決するには:

  1. エラーの原因を特定するときにレプリケーションを続行する必要がある場合は、ディストリビューション エージェントに -SkipErrors 20598 パラメーターを指定します。 これにより、エージェントはエラー 20598 になる変更をスキップしながら、他の変更をレプリケートできます。

  2. サブスクライバーで削除された行、またはパブリッシャーの対応する行とは異なる主キーを持つ行を特定します。 tablediff ユーティリティを使用して、パブリケーション データベースとサブスクリプション データベースで異なる行を特定できます。 レプリケートされたデータベースでこのユーティリティを使用する方法の詳細については、「 差分のレプリケート テーブルの比較 (レプリケーション プログラミング)」を参照してください。

  3. tablediff ユーティリティまたは別の方法を使用して、サブスクライバーの行を修正します。

  4. (省略可能) SkipErrors パラメーターを 削除します。

こちらもご覧ください

エラーとイベントのリファレンス (レプリケーション)