SQL Server 2012主键自动增量跳过10.000

时间:2014-10-28 09:04:17

标签: silverlight-4.0 sql-server-2012 auto-increment windows-server-2012

我有一台带有SQL Server 2012的Windows Server 2012和运行4个Silverlight(4)应用程序的IIS。从某一天开始,其中一个Silverlight应用程序跳过10,000个数字。

以下是datagrid的图片,以显示结果:

The problem

有人知道这里发生了什么吗?我怎样才能确保这不再发生?

另外我想知道是否有任何方法可以解决这个问题,这样就可以像489,490,491一样......

提前致谢!

1 个答案:

答案 0 :(得分:2)

这是SQL Server 2012中已知的“按设计封闭”错误/功能。

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

该功能由Microsoft实施,用于修复因处理新序列数据类型而导致的回归问题。对于所有使用标识值定义的表,在实例重新启动后发生标识范围跳转,这些表自上次启动实例以来已经有一行或多行INSERTED,即任何活动表。

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

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