Sql server mssql 2008每分钟增加一次id值
我在表中创建了主键Sql server mssql 2008每分钟增加一次id值,sql-server,identity,Sql Server,Identity,我在表中创建了主键 [id] [bigint] IDENTITY(1,1) NOT NULL 我注意到在上个星期,我的体重每分钟增加一磅。我用以检查: DBCC CHECKIDENT ('Issue'); 我找不到任何触发器或其他东西。我不会在表中创建和删除记录。这可能是MsSql的错误吗? 我使用的是MsSql 2008 R2。可能存在这样的情况:您添加了一些行,然后删除了。 执行此操作后,id将添加到删除的最后一行id中的1。此问题可能与事务回滚有关。回滚将删除事务中
[id] [bigint] IDENTITY(1,1) NOT NULL
我注意到在上个星期,我的体重每分钟增加一磅。我用以检查:
DBCC CHECKIDENT ('Issue');
我找不到任何触发器或其他东西。我不会在表中创建和删除记录。这可能是MsSql的错误吗?我使用的是MsSql 2008 R2。可能存在这样的情况:您添加了一些行,然后删除了。
执行此操作后,id将添加到删除的最后一行id中的1。此问题可能与
事务回滚有关。回滚将删除事务中包含的数据行,但不会将标识值重置为以前的设置
检查这个
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
因此,无论何时回滚事务,都不会重置标识。要检查的另一件事是任何新存储过程是否正确。我遇到过这样的情况:人们编写了更改脚本,却忘记了在两个部分之间插入一个GO
,因此第二部分包含在存储过程中。我们神秘地将记录添加到表中。花了一段时间才抓住它
在您的情况下,它可能正在执行某些操作(如在表中设定数据种子),但一个事务正在导致它回滚。您对“我的数据库创建id不是序列号”的确切含义是什么?我的数据库不会增加id 1的值。我得到一个奇怪的id值,比如3000,然后是3120,然后是3822,然后是5326。我找不到原因。你用的是什么版本的MSSQL?我用的是MSSQL 2010没有所谓的“MSSQL 2010”-有SQL Server 2008,SQL Server 2008 R2,SQL Server 2012…但我得到的id之间的差异是1000!这是一个非常大的值。是的……这是一个很大的差异。我做了很多次,但这个问题从来没有发生在我身上