启用 identity_insert - 合并复制

13

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

我想在发布者上向合并后的表中添加特定行(将标识值设置为标识范围之外的某个值)。但是当我尝试这样做时,我会收到以下错误消息:

插入失败。它与数据库“xxx”中的标识范围检查约束,在复制的表“dbo.yyy”中,列“yyy_id”冲突。如果标识列由复制自动管理,请按以下方式更新范围:对于发布者,请执行 sp_adjustpublisheridentityrange;对于订阅者,请运行 Distribution Agent 或 Merge Agent。

有没有办法将特定的标识值强制插入正在使用标识范围管理的合并复制表中?

2个回答

3
一种方法是确保复制拓扑中的每个节点使用不同的标识值范围,以避免出现重复。例如,可以将发布者分配到1-100的范围内,将订阅者A分配到101-200的范围内,将订阅者B分配到201-300的范围内。如果在发布者上插入一行且标识值为65,则该值会被复制到每个订阅者。当复制在每个订阅者上插入数据时,它不会增加订阅者表中的标识列值;而是插入文字值65。只有用户插入,而不是复制代理插入,会导致标识列值递增。
参考:复制标识列

谢谢Mitch,但在我处理的情况下,客户正在主题和子题中积极输入记录,并被分配ID。 我想插入一个特定的ID到pub(低于当前范围)。 但是我希望添加到pub的客户在范围内添加。 - Paul McCann

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接