标识列增量跳跃

8
我在我的数据库中遇到了一些有趣的问题。主键的增加方式如下:
1
2
3
4
5
6
7
8
1001

我正在使用EntityFramework或者有时候使用LINQ to SQL。


你的插入操作在某个时候失败了吗? - Daniel A. White
1
如果您正在使用SQL Server 2012,则这是一个错误。 - ta.speot.is
1
http://connect.microsoft.com/SQLServer/feedback/details/739013/alwayson-failover-results-in-reseed-of-identity - ta.speot.is
当SQL Server 2012失去其预分配的序列号时,就会发生这种情况... - OzrenTkalcecKrznaric
2个回答

4

当SQL Server 2012失去其预先分配的序列号时,就会发生这种情况。

如果您想摆脱它,一种选择是使用跟踪标志:

DBCC TRACEON (272)

另一种选择是使用序列(不带缓存)而不是标识符(identity):
CREATE SEQUENCE MySeq AS int
  START WITH 1
  INCREMENT BY 1
  NO CACHE;

请看这个链接:http://www.big.info/2013/01/how-to-solve-sql-server-2012-identity.html,它涉及到SQL Server 2012标识符的解决方案。

祝大家好运。点赞 - ojorma

1
这是完全正常的。Microsoft在SQL Server 2012中添加了序列,请参考此链接进行解释。
如果您想要旧的行为,可以:
使用跟踪标志272 - 这将导致为每个生成的标识值生成一个日志记录。打开此跟踪标志可能会影响标识生成的性能。 使用NO CACHE设置的序列生成器(http://msdn.microsoft.com/en-us/library/ff878091.aspx

你的第一个链接已经失效。 - Sang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接