8

我在我的数据库中遇到了一些有趣的事情。主键增加如下:

1
2
3
4
5
6
7
8
1001

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

4

2 回答 2

4

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

如果你想摆脱它,一种选择是使用 traceflag:

DBCC TRACEON (272)

另一种选择是使用序列(没有缓存)而不是身份:

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

于 2013-08-07T13:02:21.157 回答
1

这一切都很正常。Microsoft 在 SQL Server 2012 中添加了序列,请查看此处的链接以获得一些解释。

如果你想拥有旧的行为,你可以:

使用跟踪标志 272 - 这将导致为每个生成的身份值生成日志记录。打开此跟踪标志可能会影响身份生成的性能。使用带有 NO CACHE 设置的序列生成器 ( http://msdn.microsoft.com/en-us/library/ff878091.aspx )

于 2013-08-07T14:34:14.900 回答