我试过在互联网上找到这个,但找不到任何关于它的东西。有一些方法可以在分发代理中跳过错误,但在应用快照时跳过错误没有任何内容。
我的问题:我有一个Multi Publisher Single Subscriber设置。在设置复制时,第一个发布服务器的快照已成功传递给订户。已成功生成连续发布者的快照,但在将其应用于订阅者时失败。失败是由于主键违规造成的。有没有办法在订阅服务器上应用快照时跳过错误?
环境:
我已经尝试识别导致此问题的表和记录,但是有超过100个这样的表,每个表都有数百条记录。
由于复制是客户端要求,因此我无法控制架构及其中的数据。
答案 0 :(得分:1)
听起来您的设置中的内容不正确,这导致来自不同发布商的多个表尝试将行插入到同一订阅者表中,因此重复的密钥记录。
如果不同的发布者都拥有同一个表的相同副本,您只想从其中一个发布。
如果不同的发布者都拥有同一个表的个不同副本,那么您希望每个发布者都拥有自己的订阅者表。
否则,您最终会丢失订阅者中的大量行(因为不同的发布者对实际不同的行使用相同的密钥)或者遇到奇怪的复制错误。只是跳过错误会导致数据不正确 - 而且我也猜测这也是客户要求之一。
我过去使用过的一个选项来简化复制地形和管理:
这也可以使管理更简单。如果您需要重新初始化单个数据库,则可以选择从备份中恢复它,并且通常比订阅者共享同一数据库时更灵活。
为了完整起见,我应该向您指出Skipping Errors in Transactional Replication中的联机丛书条目。但要明确的是,我认为这是一个错误,因为你最终会得到不正确的数据 - 这可能不是任何人想要的。