我有一台带有SQL Server 2012的Windows Server 2012和运行4个Silverlight(4)应用程序的IIS。从某一天开始,其中一个Silverlight应用程序跳过10,000个数字。
以下是datagrid的图片,以显示结果:
有人知道这里发生了什么吗?我怎样才能确保这不再发生?
另外我想知道是否有任何方法可以解决这个问题,这样就可以像489,490,491一样......
提前致谢!
答案 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范围的差距。