マージ レプリケーションの競合の詳細 - COM ベースの競合回避モジュール

適用対象: SQL サーバー

SQL Server が搭載されるすべての COM ベースの競合回避モジュールでは、更新の競合が処理され、指定した場所で挿入および削除の競合が処理されます。 すべての競合回避モジュールで列追跡処理が可能です。また、ほとんどのモジュールで行追跡処理を行うこともできます。 この競合回避モジュール、および他の COM ベースの競合回避モジュールで処理可能な競合の種類が宣言され、それ以外の競合に対してはマージ エージェントで既定の競合回避モジュールが使用されます。

競合回避モジュールは SQL Server のインストール処理中にインストールされます。 コンピューターに登録されているすべての競合回避モジュールを表示するには、 sp_enumcustomresolvers ストアド プロシージャを実行してください。 個別の結果セット内にある各競合回避モジュールの説明とグローバル一意識別子 (GUID) が表示されます。

競合回避モジュールを指定するには、「 Specify a Merge Article Resolver」を参照してください。

次の表は、特定の競合回避モジュールの属性を示しています。

名前 必要な入力 説明 Comments
Microsoft SQL Server Additive Conflict Resolver 合計する列の名前。 intsmallintnumericなどの算術データ型である必要があります。 優先される競合データは優先度値によって決まります。 指定された列の値は、変換元の列の値と変換先の列の値を合計した値に設定されます。 1 つを NULL に設定した場合、他の列の値に設定されます。 更新の競合を対象とし、列追跡のみを行います。
Microsoft SQL Server Averaging Conflict Resolver 平均をとる列の名前。 intsmallintnumericなどの算術データ型である必要があります。 優先される競合データは優先度値によって決まります。 結果の列の値は、変換元の列の値と変換先の列の値の平均値に設定されます。 1 つを NULL に設定した場合、他の列の値に設定されます。 更新の競合を対象とし、列追跡のみを行います。
Microsoft SQL Server DATETIME (Earlier Wins) Conflict Resolver 競合で優先されるデータを指定するのに使用する列の名前。 datetime 型である必要があります。 datetime 値で日付の古い列のデータが優先されます。 1 つを NULL に設定した場合、それ以外を格納する行が競合で優先されます。 更新の競合を対象とし、行および列追跡を行います。 列の値は直接比較され、タイム ゾーンが異なる場合、調整は実行されません。
Microsoft SQL Server DATETIME (Later Wins) Conflict Resolver 競合で優先されるデータを指定するのに使用する列の名前。 datetime 型である必要があります。 datetime 値で日付の新しい列のデータが優先されます。 1 つを NULL に設定した場合、それ以外を格納する行が競合で優先されます。 更新の競合を対象とし、行および列追跡を行います。
Microsoft SQL Server Maximum Conflict Resolver 競合で優先されるデータを指定するのに使用する列の名前。 intsmallintnumericなどの算術データ型である必要があります。 数値の大きい列のデータが優先されます。 1 つを NULL に設定した場合、それ以外を格納する行が競合で優先されます。 行および列追跡を行います。
Microsoft SQL Server Minimum Conflict Resolver 競合で優先されるデータを指定するのに使用する列の名前。 intsmallintnumericなどの算術データ型である必要があります。 数値の小さい列のデータが優先されます。 1 つを NULL に設定した場合、それ以外を格納する行が競合で優先されます。 更新の競合を対象とし、行および列追跡を行います。
Microsoft SQL Server Merge Text Conflict Resolver @resolver_info = '[col1][===]'などのテキスト列と区切り記号の名前。 優先される競合データは優先度値によって決まります。 競合しているテキスト列は、マージされた値に設定されます。この値は、一般的なプレフィックスの後にパブリッシャーからの一意の部分、区切り記号、最後にサブスクライバーからの一意の部分の順で構成されます。 更新の競合を対象とし、列追跡のみを行います。
Microsoft SQL Server Subscriber Always Wins Conflict Resolver 入力なし。 変換元か変換先かにかかわらず、サブスクライバーのデータが優先されます。 全種類の競合を対象とします。
Microsoft SQL Server Priority Column Resolver 競合で優先されるデータを指定するのに使用する列の名前。 intsmallintnumericなどの算術データ型である必要があります。 数値の大きい列のデータが優先されます。 1 つを NULL に設定した場合、それ以外を格納する行が競合で優先されます。 更新の競合を対象とし、行および列追跡を行います。
Microsoft SQL Server Upload Only Conflict Resolver 入力なし。 パブリッシャーにアップロードされた変更が許容されます。変更はサブスクライバーにはダウンロードされません。 全種類の競合を対象とします。
Microsoft SQL Server Download Only Conflict Resolver 入力なし。 パブリッシャーにアップロードされた変更は拒否されます。変更はサブスクライバーにダウンロードされます。 全種類の競合を対象とします。
Microsoft SQLServer Stored Procedure Resolver 競合を処理するために競合回避モジュールが呼び出すストアド プロシージャの名前。 競合の回避は、指定したストアド プロシージャのロジックに依存します。 更新の競合を対象とします。 詳細については、「Implement a Custom Conflict Resolver for a Merge Article」 (マージ アーティクルのカスタム競合回避モジュールの実装) を参照してください。

参照

Advanced Merge Replication Conflict Detection and Resolution
sp_enumcustomresolvers (Transact-SQL)