ピア ツー ピア トランザクション レプリケーションの競合検出を構成する方法 (レプリケーション Transact-SQL プログラミング)
ピア ツー ピア レプリケーションには、トポロジの競合の検出を有効にするオプションが導入されています。詳細については、「ピア ツー ピア レプリケーションにおける競合検出」を参照してください。
競合検出を使用するには、すべてのノードが SQL Server 2008 以降のバージョンを実行しており、すべてのノードで検出が有効になっている必要があります。競合検出は、トポロジの構成時またはトポロジの構成後に有効にできます。既存のトポロジの競合検出を有効にするために、トポロジを停止する必要はありません。ただし、すべてのノードで競合検出を有効にする前に変更が競合した場合、レプリケーションでは、こうした競合の検出を保証できません。トポロジの構成方法の詳細については、「ピア ツー ピア トランザクション レプリケーションを構成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
注意 |
---|
ピア ツー ピア レプリケーションを構成する場合は、各ノードに ID を指定します。この ID は、トポロジ内のすべてのノードに対して一意である必要があり、MSpeer_originatorid_history システム テーブルの originator_id 列に格納されます。ノードがトポロジから削除されても、ID は履歴テーブルに保持されたままです。ID が保持されるのは、削除されたノードからの変更がトポロジ全体でレプリケートされたままである場合に誤った競合が発生しないようにするためです。新しいノードに対してこの ID を再利用する場合は、先にすべてのノードで MSpeer_originatorid_history テーブルからこの ID を手動で削除する必要があります。ノードの ID を削除する前に、sp_requestpeerresponse を実行して、そのノードから発行されたすべての変更がレプリケートされていることを確認します。 |
トポロジの構成時に競合検出を有効にするには
sp_addpublication を使用して各ノードでパブリケーションを作成する場合は、次の手順を実行します。
@p2p\_conflictdetection に値 true を指定します。
@p2p\_originator\_id にゼロ以外の正の整数を指定します。トポロジで使用されていない ID を指定する必要があります。既に使用されている ID を確認するには、sp_help_peerconflictdetection を実行します。
@p2p\_continue\_onconflict に値を指定します。値 false を指定することをお勧めします。詳細については、「ピア ツー ピア レプリケーションにおける競合検出」の「競合の処理」を参照してください。
トポロジの構成後に競合検出を有効にするには
ここで示す手順では、A、B、C という 3 つのノードで構成されているトポロジを想定しています。次の手順に従って、ノード A で sp_configure_peerconflictdetection を実行します。
@publication にパブリケーション名を指定し、@action に値 enable を指定します。
@p2p\_originator\_id にゼロ以外の正の整数を指定します。トポロジで使用されていない ID を指定する必要があります。既に使用されている ID を確認するには、sp_help_peerconflictdetection を実行します。
@continue\_onconflict に値を指定します。値 false を指定することをお勧めします。詳細については、「ピア ツー ピア レプリケーションにおける競合検出」の「競合の処理」を参照してください。
ノード B とノード C で、手順 1. を繰り返します。
ノードの 1 つから sp_help_peerconflictdetection を実行します。この場合、@publication にパブリケーション名を指定します。結果セットをチェックし、すべてのノードで競合検出が有効になっていることと各ノードに一意な発信元 ID 値が設定されていることを確認します。
競合検出を無効にするには
- トポロジ内の各ノードに対して sp_configure_peerconflictdetection を実行します。@publication にパブリケーション名を指定し、@action に値 disable を指定します。