身份在SQL Server 2012中跃升了10000

Pri*_*ire 5 sql-server

我正在使用godaddy共享主机和SQL Server.有两个表(usertbl,patienttble),主键自动递增1.我使用LINQ to SQL类进行数据库操作.

问题是在将uid(来自usertbl的主键)添加为1443之后,SQL Server将下一行uid添加为11443,并且在患者的同一操作中,之前的id为1439,它添加了下一行,id为11439.我无法理解这是怎么发生的.在此问题发生之前和之后,表中的id都正确递增1.

Jam*_*s Z 1

SQL Server 不保证标识字段中没有间隙,这也是联机丛书告诉您的:

\n\n
\n

服务器重新启动或其他故障后的连续值\xe2\x80\x93SQL Server\n 出于性能原因可能会缓存标识值,并且在数据库故障或服务器\n 重新启动期间,某些分配的值可能会丢失。这可能会导致插入时标识值出现间隙。如果间隙不可接受,则应用程序应使用自己的机制来生成键值。使用带有 NOCACHE 选项的序列生成器可以限制从未提交的事务的间隙。

\n
\n\n

如上所述,使用带有 NOCACHE 的 SEQUENCES 可能是一个足够好的替代方案。

\n