行レベルの監視と列レベルの監視の使用
Microsoft SQL Server Compact 3.5 では、行レベルの監視と列レベルの監視の両方がサポートされています。パブリケーション ウィザードまたはストアド プロシージャを使用して、アーティクルごとに監視の種類を設定できます。
行レベルの監視と列レベルの監視について
行レベルの監視と列レベルの監視により、同期中のデータの転送方法および競合の検出方法が決定されます。
列レベルの監視では、同期中にパブリッシャに送信する必要がある情報の量が減少します。一方、行レベルの監視では、変更の監視により多くの記憶域が必要なので、監視のオーバーヘッドは少なくなります。
また、列レベルの監視では、複数のユーザーが同じデータを変更する際の競合の数を減らすことができます。たとえば、パブリッシャ行の住所列で 1 つの変更が行われ、対応するサブスクライバ行の同じテーブルの電話番号列で 2 番目の変更が行われたとします。行レベルの監視では、両方の行に変更が加えられたので、競合が検出されます。列レベルの監視では、行の異なる列が変更されたので、競合が検出されません。
注意
スキーマの変更は常にデータ同期が発生する前に処理されます。
監視とマージ レプリケーションの詳細については、SQL Server オンライン ブックの「マージ レプリケーションの競合検出および解決の詳細」を参照してください。
パブリケーション ウィザードを使用した監視の有効化
パブリケーション ウィザードを使用してパブリケーションを作成する場合、アーティクルを追加する際に監視を有効にします。行レベルの監視と列レベルの監視の両方が、同時に構成されます。
注意
特に指定しない限り、すべてのアーティクルで列レベルの監視が既定の監視になります。
sp_addmergearticle または sp_changemergearticle を使用した監視の有効化
sp_addmergearticle ストアド プロシージャにより、パブリケーションにアーティクルを追加する際に、監視の種類を指定できます。sp_addmergearticle ストアド プロシージャの @column\_tracking パラメータを、列レベルの監視の場合は 'true' に設定し、行レベルの監視の場合は 'false' に設定します。
パブリケーションの既存のアクティブでないマージ アーティクルのプロパティを変更する場合は、sp_changemergearticle ストアド プロシージャの @property パラメータを 'column_tracking' に設定した後、@value パラメータを、列レベルの監視の場合は 'true' に設定し、行レベルの監視の場合は 'false' に設定します。
注意
パブリケーションにアクティブなサブスクリプションが作成された後で、これらのプロパティを変更すると、現在のスナップショットが古くなり、既存のサブスクリプションに再初期化マークが付けられます。