削除を追跡しないように指定する方法 (レプリケーション Transact-SQL プログラミング)
既定では、マージ レプリケーションではパブリッシャとサブスクライバの DELETE コマンドが同期されます。マージ レプリケーションを使用すると、行がパブリケーションから削除されても、サブスクリプション データベースでその行を保持できます。その逆の操作も可能です。新しいアーティクルを作成するときに DELETE コマンドを無視するようにプログラムで指定したり、レプリケーション ストアド プロシージャを使用してこの機能を後で有効にすることができます。
重要 : |
---|
この機能を有効にすると、データが収束しなくなります。つまり、サブスクライバに存在するデータにパブリッシャのデータが正確に反映されなくなります。削除された行を手動で削除するためのメカニズムを独自に実装する必要があります。 |
新しいマージ アーティクルで削除を無視するように指定するには
パブリッシャ側のパブリケーション データベースに対して、sp_addmergearticle (Transact-SQL) を実行します。@delete_tracking に false を指定します。詳細については、「アーティクルを定義する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
メモ : アーティクルのソース テーブルが別のパブリケーションで既にパブリッシュされている場合、両方のアーティクルで delete_tracking の値を同じにする必要があります。
既存のマージ アーティクルで削除を無視するように指定するには
アーティクルでエラー補正が有効になっているかどうかを確認するために、sp_helpmergearticle (Transact-SQL) を実行して、結果セット内の delete_tracking の値を確認します。値が 0 の場合、削除は既に無視されています。
手順 1. で得た値が 1 だった場合、パブリッシャ側のパブリケーション データベースに対して sp_changemergearticle (Transact-SQL) を実行します。@property に delete_tracking の値を指定し、@value に false を指定します。
メモ : アーティクルのソース テーブルが別のパブリケーションで既にパブリッシュされている場合、両方のアーティクルで delete_tracking の値を同じにする必要があります。
参照
その他の技術情報
条件付き削除の追跡によるマージ レプリケーション パフォーマンスの最適化