DBCC CHECKIDENT
檢查指定表的當前標識值
如有必要
還對標識值進行更正
語法
DBCC CHECKIDENT
(
table_name
[
{ NORESEED
| { RESEED ][
new_reseed_value ] }
}
]
)
參數
table_name
是要對其當前標識值進行檢查的表名
指定的表必須包含標識列
NORESEED
指定不應更正當前標識值
RESEED
指定應該更正當前標識值
new_reseed_value
是在標識列中重新賦值時要使用的值
注釋
如有必要
DBCC CHECKIDENT 會更正列的當前標識值
然而
如果標識列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 語句中)創建的
則不更正當前標識值
如果標識列上有主鍵或唯一鍵約束
無效標識信息可能會導致錯誤信息
DBCC CHECKIDENT (
table_name
NORESEED) 不重置當前標識值
DBCC CHECKIDENT 返回一個報表
它指明當前標識值和應有的標識值
DBCC CHECKIDENT (
table_name
) 或
DBCC CHECKIDENT (
table_name
RESEED) 如果表的當前標識值小於列中存儲的最大標識值
則使用標識列中的最大值對其進行重置
DBCC CHECKIDENT (
table_name
RESEED
new_reseed_value) 當前值設置為 new_reseed_value
如果自創建表後沒有將行插入該表
則在執行 DBCC CHECKIDENT 後插入的第一行將使用 new_reseed_value 作為標識
否則
下一個插入的行將使用 new_reseed_value +
如果 new_reseed_value 的值小於標識列中的最大值
以後引用該表時將產生
號錯誤信息
當前標識值可以大於表中的最大值
在此情況下
DBCC CHECKIDENT 並不自動重置當前標識值
若要在當前標識值大於列中的最大值時對當前標識值進行重置
請使用兩種方法中的任意一種
執行 DBCC CHECKIDENT (
table_name
NORESEED) 以確定列中的當前最大值
然後使用 DBCC CHECKIDENT (
table_name
RESEED
new_reseed_value) 語句將該值指定為 new_reseed_value
將 new_reseed_value 置為很小值來執行 DBCC CHECKIDENT (
table_name
RESEED
new_reseed_value)
然後運行 DBCC CHECKIDENT (
table_name
RESEED)
結果集
不管是否指定任何選項(針對於包含標識列的表
下例使用 pubs 數據庫的 jobs 表)
DBCC CHECKIDENT 返回以下結果集(值可能會有變化)
Checking identity information: current identity value
current column value
DBCC execution completed
If DBCC printed error messages
contact your system administrator
權限
DBCC CHECKIDENT 權限默認授予表所有者
sysadmin 固定服務器角色和 db_owner 固定數據庫角色的成員且不可轉讓
示例
A
如有必要
重置當前標識值
下例在必要的情況下重置 jobs 表的當前標識值
USE pubs
GO
DBCC CHECKIDENT (jobs)
GO
B
報告當前標識值
下例報告 jobs 表中的當前標識值
如果該標識值不正確
並不對其進行更正
USE pubs
GO
DBCC CHECKIDENT (jobs
NORESEED)
GO
C
強制當前標識值為
下例強制 jobs 表中的當前標識值為
USE pubs
GO
DBCC CHECKIDENT (jobs
RESEED
)
GO
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26059.html