我在表格中创建了主键
[id] [bigint] IDENTITY(1,1) NOT NULL
我注意到上周每分钟的id增加了。我正在检查增加:
DBCC CHECKIDENT ('Issue');
我找不到任何触发器或其他东西。我不会在表格中创建和删除记录。这可能是MsSql的错误吗?
我正在使用MsSql 2008 R2。
答案 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
的情况,因此第二部分包含在存储过程中。我们神秘地将记录添加到表格中。需要一段时间才能抓住它。
在你的情况下,它可能正在做某事(比如播种表中的数据),但事务导致它回滚。