SQL Server 提供的所有基于 COM 的冲突解决程序都处理更新冲突,并在所指示的位置处理插入和删除冲突。 它们都处理列跟踪;大多数还处理行跟踪。 这些和所有其他基于 COM 的冲突解决程序声明了可以处理的冲突类型,而合并代理将默认冲突解决程序用于所有其他冲突类型。
解析程序是在 SQL Server 安装过程中安装的。 执行 sp_enumcustomresolvers 存储过程以查看计算机上注册的所有冲突解决程序。 执行该过程将显示每个解析程序的描述和全局唯一标识符(GUID)在独立的结果集中。
若要指定解析程序,请参阅 “指定合并文章解析程序”。
下表描述了特定解析程序的属性。
| 名称 | 要求的输入 | DESCRIPTION | 注释 |
|---|---|---|---|
| Microsoft SQL Server 增量冲突解决器 | 被求和的列的名称。 它必须具有算术数据类型(如 int、 smallint、 numeric 等)。 | 冲突获胜者根据优先级值确定。 指定的列值设置为源和目标列值的总和。 如果一个设置为 NULL,则它们将设置为另一列的值。 | 仅支持更新冲突,仅限于列跟踪。 |
| Microsoft SQL Server 平均冲突解决程序 | 要求平均值的列的名称。 它必须具有算术数据类型(如 int、 smallint、 numeric 等)。 | 冲突获胜者根据优先级值确定。 生成的列值设置为源和目标列值的平均值。 如果一个被设置为 NULL,那么它将被设置为另一列的值。 | 支持更新冲突,仅限于列跟踪。 |
| Microsoft SQL Server DATETIME (早期获胜)冲突解决器 | 用于确定冲突获胜者的列的名称。 它必须具有 日期/时间 数据类型。 | 具有早期 日期/时间 值的列确定冲突获胜者。 如果其中一个设置为 NULL,则包含另一个的那一行将是赢家。 | 支持更新冲突、行和列跟踪。 列值直接比较,不会因为不同时区而进行调整。 |
| Microsoft SQL Server DATETIME (稍后获胜) 冲突解决程序 | 用于确定冲突获胜者的列的名称。 它必须具有 日期/时间 数据类型。 | 具有更高 日期/时间 值的列确定冲突获胜者。 如果一个设置为 NULL,则包含另一个行是赢家。 | 支持更新冲突、行和列跟踪。 |
| Microsoft SQL Server 最大化冲突解决程序 | 用于决定冲突获胜者的列名称。 它必须具有算术数据类型(如 int、 smallint、 numeric 等)。 | 具有较大数值的列决定了冲突获胜者。 如果一个设置为 NULL,则包含另一个的行将成为赢家。 | 支持行和列跟踪。 |
| Microsoft SQL Server 最低冲突解决程序 | 用于确定冲突胜者的列名称。 它必须具有算术数据类型(如 int、 smallint、 numeric 等)。 | 具有较小数值的列确定冲突获胜者。 如果一个被设置为 NULL,则包含另一个的那一行是赢家。 | 支持更新冲突、行和列跟踪。 |
| Microsoft SQL Server 合并文本冲突解决器 | 文本列和分隔符的名称,例如 @resolver_info = '[col1][===]'。 |
冲突获胜者根据优先级值确定。 冲突中的文本列将被设置为合并后的值,合并值由公共前缀开始,然后添加来自发布者的唯一部分,接着是分隔符,最后是来自订阅者的独特部分。 | 仅支持更新冲突,仅限于列跟踪。 |
| Microsoft SQL Server 订阅者始终赢得冲突解决器 | 无输入。 | 订阅者,无论它是源还是目标,都是优胜者。 | 支持所有冲突类型。 |
| Microsoft SQL Server 优先级列解析程序 | 用于决定冲突胜者的列名称。 它必须具有算术数据类型(如 int、 smallint、 numeric 等)。 | 具有较大数值的列决定了冲突获胜者。 如果其中一个设置为 NULL,则包含另一个值的行是赢家。 | 支持更新冲突、行和列跟踪。 |
| Microsoft SQL Server 仅上传冲突解决程序 | 无输入。 | 接受上传到发布者的更改,订阅者不会下载这些更改。 | 支持所有冲突类型。 |
| Microsoft SQL Server 仅供下载冲突解析器 | 无输入。 | 上载到发布服务器的更改将被拒绝;更改将下载到订阅服务器。 | 支持所有冲突类型。 |
| Microsoft SQLServer 存储过程解析程序 | 冲突解决程序应调用的存储过程的名称,以处理冲突。 | 冲突解决取决于您指定的存储过程中的逻辑。 | 支持处理更新冲突。 有关详细信息,请参阅 为合并项目实现自定义冲突解决程序 |