マージ アーティクルの競合追跡と競合解決のレベルの指定
このトピックでは、SQL Server 2012 で SQL Server Management Studio または Transact-SQL を使用して、マージ アーティクルの競合追跡と回避のレベルを指定する方法について説明します。
マージ パブリケーションへのサブスクリプションを同期する際、パブリッシャーとサブスクライバーの同じデータに加えられた変更によって、競合が発生していないかどうかがレプリケーション時に確認されます。 競合を行レベルで検出するか (行に加えられたすべての変更が競合と見なされます)、列レベルで検出するか (同じ行と列に対する変更のみが競合と見なされます) を指定できます。 アーティクルの競合解決は行レベルで実行されます。 論理レコードが使用される場合の競合の検出と解決の詳細については、「論理レコードの競合の検出および解決」を参照してください。
このトピックの内容
作業を開始する準備:
制限事項と制約事項
マージ アーティクルに対して競合の追跡と競合解決のレベルを指定するために使用するもの:
SQL Server Management Studio
Transact-SQL
作業を開始する準備
制限事項と制約事項
サブスクリプションを初期化した後で追跡レベルを変更した場合は、サブスクリプションを再初期化する必要があります。 プロパティ変更の影響の詳細については、「パブリケーションおよびアーティクルのプロパティの変更」を参照してください。
行レベルおよび列レベルの追跡では、行レベルでの競合回避は常に実行されます。優先されなかった行が優先された行で上書きされます。 マージ レプリケーションでは、論理レコード レベルでの競合の追跡と回避も指定できますが、このオプションは SQL Server Management Studio にはありません。 レプリケーション ストアド プロシージャからこのオプションを設定する方法については、「マージ テーブル アーティクル間に論理レコード リレーションシップを定義する」を参照してください。
[Top]
SQL Server Management Studio の使用
[アーティクルのプロパティ] ダイアログ ボックスの [プロパティ] タブで、マージ アーティクルに対する行レベルまたは列レベルの追跡を指定します。このダイアログ ボックスは、パブリケーションの新規作成ウィザードか [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスからアクセスできます。 このウィザードの使用とダイアログ ボックスへのアクセスの詳細については、「パブリケーションの作成」および「パブリケーション プロパティの表示および変更」を参照してください。
行レベルまたは列レベルの追跡を指定するには
パブリケーションの新規作成ウィザードの [アーティクル] ページまたは [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスで、テーブルを選択します。
[アーティクルのプロパティ] をクリックし、次に [反転表示されたテーブル アーティクルのプロパティを設定] または [すべてのテーブル アーティクルのプロパティを設定] をクリックします。
[アーティクルのプロパティ - <Article>] ダイアログ ボックスの [プロパティ] タブで、[追跡レベル] プロパティに対して [行レベルの追跡] または [列レベルの追跡] のどちらかを選択します。
[パブリケーションのプロパティ - <Publication>] ダイアログ ボックスが表示されている場合は、[OK] をクリックして保存し、ダイアログ ボックスを閉じます。
[Top]
Transact-SQL の使用
新しいマージ アーティクルの競合追跡オプションを指定するには
パブリッシャーのパブリケーション データベースに対して、sp_addmergearticle を実行し、次のいずれかの値を @column_tracking に指定します。
true - アーティクルに対して列レベルの追跡を使用します。
false - 既定の行レベルの追跡を使用します。
マージ アーティクルの競合追跡オプションを変更するには
マージ アーティクルの競合追跡オプションを定義するには、sp_helpmergearticle を実行します。 アーティクルの結果セットの column_tracking オプションの値を調べます。 値 1 は、列レベルの追跡が使用されていることを示します。値 0 は、行レベルの追跡が使用されていることを示します。
パブリッシャーのパブリケーション データベースに対して、sp_changemergearticle を実行します。 @property に column_tracking の値を指定し、@value に次のいずれかの値を指定します。
true - アーティクルに対して列レベルの追跡を使用します。
false - 既定の行レベルの追跡を使用します。
@force_invalidate_snapshot および @force_reinit_subscription に 1 を指定します。
[Top]