订阅服务器上的合并复制中的身份管理

时间:2014-04-09 09:03:07

标签: sql sql-server replication

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

复制情况:

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

问题:

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

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

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

问题发生了3次。 我通过手动重新设定修复了问题:

DBCC CHECKIDENT('DocumentItems' , RESEED, xxxx)

其中xxxx是[DocumentItemsID] + MAX

的MAX现有值

再次断电后,会出现同样的问题。

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

由于

1 个答案:

答案 0 :(得分:0)

好的,最后我知道发生了什么。

这是仅在SQL Server 2012中发生的问题。重新启动SQL Server实例时,会跳转表的标识值(int将跳转1000,其中big int将跳转10000)。

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

这解决了这个问题。

感谢Code Project article by S. M. Ahasan Habib,当我读到它时,我完全处于黑暗中。

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