我在我的數據庫有一個ID爲int自動增量的表。當我創建一個ndew條目時,一切都很順利,id增加1.自動增量在ID之間的差距
但今天我看到了一個大洞。其中一條記錄的id = 56,下一條記錄的id = 1055。
什麼可能導致這種情況。我們沒有在這個數據庫上做備份。
我在我的數據庫有一個ID爲int自動增量的表。當我創建一個ndew條目時,一切都很順利,id增加1.自動增量在ID之間的差距
但今天我看到了一個大洞。其中一條記錄的id = 56,下一條記錄的id = 1055。
什麼可能導致這種情況。我們沒有在這個數據庫上做備份。
有幾件事情,可能會導致該
DBCC CHECKIDENT
還要記住,如果刪除所有具有DELETE
語句的行,則種子不會重置爲1,如果您的表爲
可以以某種方式檢查DBCC CHECKIDENT是否在這個數據庫上執行? – 2013-04-11 13:35:21
不是我所知道的 – SQLMenace 2013-04-11 13:39:35
很可能在插入或事務方面存在一些錯誤回滾。 表的標識值不受事務的影響。因此,例如,即使向表中插入值並回滾事務,您的身份標識值也會「保持遞增」。簡短的例子來說明:
create table _test (
id int identity (1,1)
,txt varchar(2)
)
insert into _test(txt)
select 'aa' as txt
insert into _test(txt)
select 'bb' as txt union all
select 'ccc'
GO
insert into _test(txt)
select 'dd' as txt
select * from _test
的[?爲什麼在我的身份列值的差距(
可能重複http://stackoverflow.com/questions/14642013/why-are-there-gaps-in-my -identity-column-values) – Pondlife 2013-04-11 14:23:06