マージ サブスクライバのパーティション情報の検証

マージ パプリケーションに対してパラメータ化された行フィルタを定義している場合は、サブスクライバ情報 (サブスクライバのログイン名など) を参照する関数を使用します。既定では、レプリケーションはその関数に基づいて、各同期の前およびサブスクライバにスナップショットが適用されるたびに、サブスクライバ情報を検証します。検証プロセスによって、各サブスクライバのデータが正しくパーティション分割されます。検証の動作は、validate_subscriber_info パブリケーション プロパティで制御されます。このプロパティは、sp_changemergepublication (Transact-SQL) または [パブリケーションのプロパティ] ダイアログ ボックスの [サブスクリプション オプション] ページで変更できます。パブリケーションのプロパティの変更の詳細については、「パブリケーションのプロパティを表示および変更する方法 (レプリケーション Transact-SQL プログラミング)」および「パブリケーションとアーティクルのプロパティを表示および変更する方法 (SQL Server Management Studio)」を参照してください。

パーティション検証の動作

たとえば、SUSER_SNAME() 関数によってパブリケーションをフィルタ選択するとき、マージ エージェントは SUSER_SNAME() 式で有効なデータに基づいて初期スナップショットを各サブスクライバに適用します。

検証が有効な場合、次の同期のためにサブスクライバがパブリッシャに再接続すると、マージ エージェントはサブスクライバの情報を検証し、各サブスクライバのパーティションが、初期スナップショットで受信したパーティションと同じであるかどうかを確認します。その後の各マージ アプリケーションまたはスナップショット アプリケーションでは、マージ エージェントは各サブスクライバのパーティションを検証します。

フィルタ式で使用されている関数が初期スナップショットで返された値と異なる値を返すことをマージ エージェントが検出すると、マージ アプリケーションまたはスナップショット アプリケーションは失敗し、場合によってはそのサブスクライバのサブスクリプションを再初期化する必要があります。サブスクライバのマージ設定が変更された場合に発生する問題を回避するために再初期化が必要な場合がありますが、ログイン名などのサブスクライバの情報を変更して、元のスナップショット時に使用していた値に戻すだけで十分な場合もあります。

マージ エージェントがパーティションを検証するときには、フィルタ式で使用するすべての関数から返される値に対してパーティションを検証するだけなく、メタデータのクリーンアップ操作やスキーマ変更などの変更が行われる前に、その変更で無効になったスナップショットが生成されていたかどうかもチェックします。パーティション化されたスナップショットが古すぎる場合、マージ エージェントはエラーを返します。この場合は、現在の標準スナップショットに基づいてそのサブスクライバのパーティション化されたスナップショットを再生成する必要があります。

参照

概念

レプリケーション管理の推奨事項
サブスクリプションの再初期化
レプリケートされたデータの検証

その他の技術情報

レプリケーションの管理

ヘルプおよび情報

SQL Server 2005 の参考資料の入手