mssql 2008每分钟增加id值

时间:2014-10-27 11:51:38

标签: sql-server identity

我在表格中创建了主键

[id] [bigint] IDENTITY(1,1) NOT NULL          

我注意到上周每分钟的id增加了。我正在检查增加:

DBCC CHECKIDENT ('Issue');

我找不到任何触发器或其他东西。我不会在表格中创建和删除记录。这可能是MsSql的错误吗?
我正在使用MsSql 2008 R2。

3 个答案:

答案 0 :(得分:1)

问题可能与transaction rollbacks有关。回滚将删除事务中包含的数据行,但不会将标识值重置为先前的设置

检查这个

CREATE TABLE #ident 
( 
      ID INT IDENTITY(1,1) 
      , column1 VARCHAR(20) NULL 
) 

INSERT #ident 
VALUES ('a'),('b'),('c')


BEGIN TRAN 
INSERT #ident 
VALUES ('d'),('e'),('f')
ROLLBACK TRAN

INSERT #ident 
VALUES ('g'),('h'),('i')

select * from #ident

,结果是

ID  column1
--  -------
1   a
2   b
3   c
7   g
8   h
9   i

所以每当交易回滚时,身份都不会被重置

答案 1 :(得分:0)

可能存在添加一些行然后删除的情况。 执行此操作后,id将在最后一行ID中添加1,该ID将被删除。

答案 2 :(得分:0)

要检查的另一件事是任何新的存储过程都是正确的。我遇到了人们编写了更改并在两部分之间忘记了GO的情况,因此第二部分包含在存储过程中。我们神秘地将记录添加到表格中。需要一段时间才能抓住它。

在你的情况下,它可能正在做某事(比如播种表中的数据),但事务导致它回滚。