マージ レプリケーションの競合の詳細 - COM ベースの競合回避モジュール
適用対象: SQL サーバー
SQL Server が搭載されるすべての COM ベースの競合回避モジュールでは、更新の競合が処理され、指定した場所で挿入および削除の競合が処理されます。 すべての競合回避モジュールで列追跡処理が可能です。また、ほとんどのモジュールで行追跡処理を行うこともできます。 この競合回避モジュール、および他の COM ベースの競合回避モジュールで処理可能な競合の種類が宣言され、それ以外の競合に対してはマージ エージェントで既定の競合回避モジュールが使用されます。
競合回避モジュールは SQL Server のインストール処理中にインストールされます。 コンピューターに登録されているすべての競合回避モジュールを表示するには、 sp_enumcustomresolvers ストアド プロシージャを実行してください。 個別の結果セット内にある各競合回避モジュールの説明とグローバル一意識別子 (GUID) が表示されます。
競合回避モジュールを指定するには、「 Specify a Merge Article Resolver」を参照してください。
次の表は、特定の競合回避モジュールの属性を示しています。
名前 | 必要な入力 | 説明 | Comments |
---|---|---|---|
Microsoft SQL Server Additive Conflict Resolver | 合計する列の名前。 int、 smallint、 numericなどの算術データ型である必要があります。 | 優先される競合データは優先度値によって決まります。 指定された列の値は、変換元の列の値と変換先の列の値を合計した値に設定されます。 1 つを NULL に設定した場合、他の列の値に設定されます。 | 更新の競合を対象とし、列追跡のみを行います。 |
Microsoft SQL Server Averaging Conflict Resolver | 平均をとる列の名前。 int、 smallint、 numericなどの算術データ型である必要があります。 | 優先される競合データは優先度値によって決まります。 結果の列の値は、変換元の列の値と変換先の列の値の平均値に設定されます。 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 | 競合で優先されるデータを指定するのに使用する列の名前。 int、 smallint、 numericなどの算術データ型である必要があります。 | 数値の大きい列のデータが優先されます。 1 つを NULL に設定した場合、それ以外を格納する行が競合で優先されます。 | 行および列追跡を行います。 |
Microsoft SQL Server Minimum Conflict Resolver | 競合で優先されるデータを指定するのに使用する列の名前。 int、 smallint、 numericなどの算術データ型である必要があります。 | 数値の小さい列のデータが優先されます。 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 | 競合で優先されるデータを指定するのに使用する列の名前。 int、 smallint、 numericなどの算術データ型である必要があります。 | 数値の大きい列のデータが優先されます。 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)