13

我在两个数据库之间设置了合并复制,并且在两个数据库上都使用了身份范围。

我想在发布者的合并表中添加特定行(将标识值设置为标识范围之外的内容)。当我尝试这个时,我收到以下错误。

插入失败。它与数据库“xxx”、复制表“dbo.yyy”、列“yyy_id”中的标识范围检查约束冲突。如果标识列由复制自动管理,则更新范围如下:对于发布者,执行 sp_adjustpublisheridentityrange;对于订阅服务器,运行分发代理或合并代理。

有没有办法将特定的身份值强制到使用身份范围管理的合并复制表中?

4

2 回答 2

3

一种方法是确保复制拓扑中的每个节点都使用不同范围的标识值,这样就不会发生重复。

例如,发布者可以分配范围 1-100,订阅者 A 分配范围 101-200,订阅者 B 分配范围 201-300。如果在发布服务器处插入一行并且标识值为例如 65,则该值将复制到每个订阅服务器。当复制在每个订阅服务器上插入数据时,它不会增加订阅服务器表中的标识列值;而是插入文字值 65。只有用户插入而不是复制代理插入会导致标识列值递增。

参考。复制标识列

于 2009-03-12T14:10:39.237 回答
0

我通过增加 20000 行来增加自动插入来解决。 此处添加了有用的博客

于 2020-02-29T15:03:26.903 回答