0

我有一个运行4个Silverlight(4)应用程序的SQL Server 2012和IIS的Windows Server 2012。从某一天起,其中一个Silverlight应用程序跳过了10.000个数字。SQL Server 2012主键自动增量跳过10.000

下面是数据网格的图片显示的结果是什么:

The problem

没有任何人有一个想法,这里发生了什么?我怎样才能确保这不会再发生?

此外,我想知道是否有什么办法可以解决这个问题,以便它只会像489,490,491,...提前

谢谢!的SQL Server

回答

2

这是一个已知的“设计封闭,”臭虫/功能2012

请参阅连接Failover or Restart Results in Reseed of Identity

这项功能是由微软来实现修复所造成的,他们如何处理回归问题项目新的序列数据类型。对于使用标识值定义的所有表,在实例重新启动后发生标识范围跳转,这些表具有自上次启动实例(即任何活动表)以来具有一个或多个INSERTED行。

当指定了IDENTITY值的列被创建为INT时,SQL Server将预先分配和跳转IDENTITY范围1,000个值,并将其定义为BIGINT时将10,000个值。

目前在bug报告中描述了5个解决方法,但它们都没有一个是非常可口的。序列中是否存在间隙真的很重要,如果用IDENTITY值定义的行被删除或插入然后回滚,应用程序会发生什么情况?在这两种情况下,都会引入IDENTITY范围的差距。

+0

感谢您的快速回答! – Dave 2014-10-28 09:38:51