2

我有一种情况,我正在寻找一些指导。

我有 4 个 SQL 2008 数据库,它们使用合并复制在 Internet 上同步。1 个发布者和 3 个订阅者。

通常,在数据库中输入的记录也只能从同一个数据库中更新,并且一切正常。但是,有时在发布者处对在订阅者处创建的记录进行更新,如果自上次同步(通常为 60 秒)在订阅者上更新同一记录,则可能会导致冲突。

我使用了 SSMS 中内置的冲突解决程序,这对我来说很好(我了解架构和基础数据)。但是,我正在寻找一种解决方案,在这种解决方案中,最终用户(管理人员)可以在冲突发生时收到警报,并在没有我任何干预的情况下以他们可以理解的方式解决冲突?

当不得不处理复制冲突时,其他人做了什么?

4

2 回答 2

3

高级合并复制冲突检测和解决

使用默认冲突解决程序和客户端类型订阅时,写入发布服务器的第一个更改将赢得冲突。当使用默认的冲突解决程序和服务器类型订阅时,优先级值被分配给各个订阅者,并且在具有最高优先级的节点上所做的更改将赢得冲突。

默认情况下会发生此行为,即使发生冲突并出现在冲突查看器中,也不需要手动干预。冲突查看器仅提供一种查看保留期内发生的冲突并手动更改结果的方法。

如果您需要默认解决机制未提供的冲突解决行为,您可以选择:

业务逻辑处理程序或自定义冲突解决程序将提供一种在发生冲突时发出警报并根据业务需求自动解决冲突的方法。

于 2013-01-08T23:35:24.097 回答
1

我们首先像您一样实现了内置的冲突解决程序,但我们经常需要手动解决多个复制冲突。然后,我们决定通过以下方式改进我们的系统:

  • 在每个表中添加“最后更新日期”字段
  • 将“Microsoft SQL Server DATETIME (Later Wins) Conflict Resolver”设置为我们复制模式中的默认冲突解决程序

冲突随后下降到每月只有几个,并且可以通过冲突查看器界面训练用户处理它们,具有三个基本规则:

  • 如果有两条记录被修改,选择较新的(我仍然不知道为什么这些没有被自动处理,但是有一些)。
  • 如果没有较旧的(同时修改),则选择任何(很常见的“假”冲突情况)
  • 如果一条记录被删除而另一条记录被修改,则选择删除

就是这样。

于 2015-06-06T06:24:10.503 回答