MSSQL_ENG020598

メッセージの詳細

製品名

SQL Server

製品バージョン

9.0

製品ビルド番号

9.00.1399.60

イベント ID

20598

イベント ソース

MSSQLSERVER

コンポーネント

SQL Server データベース エンジン

シンボル名

メッセージ テキスト

レプリケートされたコマンドを適用しているときに、サブスクライバで行が見つかりませんでした。

説明

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

ユーザーの操作

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

  1. エラーの原因を特定している間にレプリケーションを続行する必要がある場合は、ディストリビューション エージェントで -SkipErrors 20598 パラメータを指定します。このパラメータを指定すると、エージェントはエラー 20598 の原因となった変更をスキップし、他の変更をレプリケートできるようになります。詳細については、「トランザクション レプリケーションでのエラーのスキップ」を参照してください。
  2. 削除されている行、またはパブリッシャの対応する行とは異なる主キーを持っているサブスクライバの行を特定します。パブリケーションとサブスクリプション データベースとの間で異なる行を確認するには、tablediff ユーティリティを使用します。レプリケートされたデータベースでこのユーティリティを使用する方法の詳細については、「レプリケートされたテーブルを比較して相違があるかどうかを確認する方法 (レプリケーション プログラミング)」を参照してください。
  3. tablediff ユーティリティまたは別の方法でサブスクライバの行を修正します。
  4. (省略可能) -SkipErrors パラメータを削除します。

参照

概念

レプリケーション エラーの原因と解決方法

その他の技術情報

トランザクション レプリケーションでのエラーのスキップ

ヘルプおよび情報

SQL Server 2005 の参考資料の入手