次の方法で共有


MSSQL_ENG020598

適用対象: SQL Server Azure SQL Managed Instance

メッセージの詳細

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

説明

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

ユーザーの操作

この問題を解決するには、次のようにします。

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

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

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

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

参照

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