身份在SQL Server 2012中跃升了10000

时间:2015-06-06 07:03:52

标签: sql-server

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

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

1 个答案:

答案 0 :(得分:1)

SQL Server不保证身份字段中没有空白,Books online也告诉您:

  

服务器重启或其他故障后的连续值 -SQL Server   可能因性能原因和某些原因而缓存身份值   在数据库故障或服务器期间,分配的值可能会丢失   重新开始。这可能导致插入时身份值的缺口。如果   差距是不可接受的,然后应用程序应该使用它自己的   生成键值的机制。使用序列生成器   NOCACHE选项可以限制从不的事务的差距   提交。

如上所述,使用带有NOCACHE的SEQUENCES可能是足够好的选择。

相关问题