MSSQL_ENG020598
メッセージの詳細
製品名 |
SQL Server |
製品バージョン |
10.50 |
製品ビルド番号 |
|
イベント ID |
20598 |
イベント ソース |
MSSQLSERVER |
コンポーネント |
SQL Server データベース エンジン |
シンボル名 |
|
メッセージ テキスト |
レプリケートされたコマンドを適用しているときに、サブスクライバーで行が見つかりませんでした。 |
説明
このエラーは、トランザクション レプリケーションで、ディストリビューション エージェントがサブスクライバーの行を更新しようとしたときに、行が削除されていたり、行の主キーが変更されている場合に発生します。既定では、変更はパブリッシャーには反映されないため、トランザクション パブリケーションに対するサブスクライバーは読み取り専用として処理されます。トランザクション レプリケーションでは、更新可能なサブスクリプションまたはピア ツー ピア レプリケーションが使用されている場合にのみ、ユーザーの変更をサブスクライバーで行う必要があります。これらのオプションの詳細については、「トランザクション レプリケーションの更新可能なサブスクリプション」および「ピア ツー ピア トランザクション レプリケーション」を参照してください。
ユーザーの操作
この問題を解決するには、次のようにします。
エラーの原因を特定している間にレプリケーションを続行する必要がある場合は、ディストリビューション エージェントで -SkipErrors 20598 パラメーターを指定します。このパラメーターを指定すると、エージェントはエラー 20598 の原因となった変更をスキップし、他の変更をレプリケートできるようになります。詳細については、「トランザクション レプリケーションでのエラーのスキップ」を参照してください。
削除されている行、またはパブリッシャーの対応する行とは異なる主キーを持っているサブスクライバーの行を特定します。パブリケーションとサブスクリプション データベースとの間で異なる行を確認するには、tablediff ユーティリティを使用します。レプリケートされたデータベースでこのユーティリティを使用する方法の詳細については、「レプリケートされたテーブルを比較して相違があるかどうかを確認する方法 (レプリケーション プログラミング)」を参照してください。
tablediff ユーティリティまたは別の方法でサブスクライバーの行を修正します。
(省略可能) -SkipErrors パラメーターを削除します。