【问题标题】:Set Identity_insert on - Merge Replication设置 Identity_insert - 合并复制
【发布时间】:2010-10-12 22:17:29
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: sql-server sql-server-2005 replication merge-replication


    【解决方案1】:

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

    例如,发布者可以是 分配范围 1-100,订阅者 A 范围 101-200,以及订阅者 B 范围 201-300。如果一行是 插入在发布者和 身份值是,例如,65, 该值被复制到每个 订户。当复制插入 在每个订阅者的数据,它不 增加标识列的值 订阅者表;相反, 插入文字值 65。仅有的 用户插入,但不复制 代理插入导致身份 要递增的列值。

    参考。 Replicating Identity Columns

    【讨论】:

    • 谢谢 Mitch,但在我处理的情况下,客户正在积极地在 pub 和 sub 中输入记录,这些记录被分配了 Id。我想在 pub 中插入一个特定的 ID(低于当前范围)。但我希望添加到 pub 的 custs 在范围内添加。
    【解决方案2】:

    我已经通过增加 20000 行来增加自动插入来解决。 Helpful blog added here

    【讨论】:

      猜你喜欢
      • 2018-05-27
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2021-08-27
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多