【问题标题】:Identity Management in a Pull Merge Replication at Subscriber订阅服务器的合并复制中的身份管理
【发布时间】:2014-04-09 09:03:06
【问题描述】:

我面临 SQL Server 复制问题 (订阅服务器的合并复制中的身份管理)。

复制情况:

  • 发行商和发行商位于一台运行 Windows Server 2012 Std 和 SQL Server 2012 Std 的服务器中
  • 一台运行 Windows 7 Professional 和 SQL Server 2012 Express Edition 的用户 PC
  • 两者都使用 VPN 通过互联网连接

问题:

订阅者有一篇文章(表)[DocumentItems],其中其标识字段 [DocumentItemsID] 由 Replication 管理并分配了以下范围:

([DocumentItemsID]>(280649) AND [DocumentItemsID]<=(290649) OR [DocumentItemsID]>(290649) AND DocumentItemsID]<=(300649)

服务器多次断电。 每次订阅者 PC 启动时,[DocumentItemsID] 字段都会在插入新行时从其范围内选择一个标识,例如 330035。

问题发生了 3 次。 我通过手动补种解决了这个问题:

DBCC CHECKIDENT('DocumentItems' , RESEED, xxxx)

其中 xxxx 是 [DocumentItemsID] + 1 的最大现有值

一旦再次断电,就会出现同样的问题。

有人知道发生了什么吗? 以及为什么 [DocumentItemsID] 字段的值超出其范围?

谢谢

【问题讨论】:

    标签: sql sql-server replication


    【解决方案1】:

    好吧,我终于知道是怎么回事了。

    只有在 SQL Server 2012 中才会出现这个问题。当 SQL Server 实例重新启动时,表的 Identity 值会跳转(int 会跳转 1000,而 big int 会跳转 10000)。

    要停止此增量,请将 -t272 注册到 SQL Server 启动参数。

    这解决了问题。

    感谢Code Project article by S. M. Ahasan Habib,当我读到它时,我完全一头雾水。

    有关如何注册启动参数的详细信息,请阅读文章。它展示了如何重现问题并提供 2 个解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 2022-11-12
      相关资源
      最近更新 更多