Sql server 2012 SQL SERVER标识每天都在更改

Sql server 2012 SQL SERVER标识每天都在更改,sql-server-2012,Sql Server 2012,我有一个表,它有一个标识列requestID。我已将自动增量和种子值都设置为1。 requestId按预期增加。但它显示了一种意想不到的行为。 如 如果今天的最后一个增量是500,则第二天的标识从1001开始。 如何解决这个问题?为什么这是个问题?很可能有500次尝试插入某些内容,但都失败了。存储连续数字不是必须的(也不是autoinc列的意图)。其目的是提供唯一的编号,其中每个新编号都大于前一个编号,从而在插入序列上给出排序顺序。您可以运行每日: 我假设您每天都在努力跟踪请求的数量,但如果任何

我有一个表,它有一个标识列requestID。我已将自动增量和种子值都设置为1。 requestId按预期增加。但它显示了一种意想不到的行为。 如 如果今天的最后一个增量是500,则第二天的标识从1001开始。
如何解决这个问题?

为什么这是个问题?很可能有500次尝试插入某些内容,但都失败了。存储连续数字不是必须的(也不是autoinc列的意图)。其目的是提供唯一的编号,其中每个新编号都大于前一个编号,从而在插入序列上给出排序顺序。

您可以运行每日:

我假设您每天都在努力跟踪请求的数量,但如果任何插入失败,您可能会看到计数问题,即您的数量可能存在差距


在我看来,最好不要每天重置字段,而是将插入时间存储到新记录的列中。然后可以按日期查询并获取计数。

在SQL 2012标识列中,内部使用带缓存的序列来生成值。虽然这提高了性能,但也有一个副作用:意外关闭会导致序列中出现间隙。没有什么可以阻止这一切。微软的官方指南是,应用程序不应该依赖于标识值来进行排序意外的“关机”包括断电、Windows重新启动以及使用NET STOP停止SQL Server实例。

您有每天触发此重置的作业吗?
DBCC CHECKIDENT ("dbo.MyTable", RESEED, 0);