IDENTITY列的乙個有用操作

2021-03-31 08:57:00 字數 2064 閱讀 9741

dbcc checkident

檢查指定表的當前標識值,如有必要,還對標識值進行更正。

語法dbcc checkident

( 'table_name'

[ ,

} ] )引數

'table_name'

是要對其當前標識值進行檢查的表名。指定的表必須包含標識列。

noreseed

指定不應更正當前標識值。

reseed

指定應該更正當前標識值。

new_reseed_value

是在標識列中重新賦值時要使用的值。

注釋如有必要,dbcc checkident 會更正列的當前標識值。然而,如果標識列是使用 not for replication 子句(在 create table 或 alter table 語句中)建立的,則不更正當前標識值。

如果標識列上有主鍵或唯一鍵約束,無效標識資訊可能會導致錯誤資訊 2627。

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 + 1。如果 new_reseed_value 的值小於標識列中的最大值,以後引用該錶時將產生 2627 號錯誤資訊。

當前標識值可以大於表中的最大值。在此情況下,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 '14', current column value '14'.

dbcc execution ***pleted. if dbcc printed error messages, contact your system administrator.

許可權dbcc checkident 許可權預設授予表所有者、sysadmin 固定伺服器角色和 db_owner 固定資料庫角色的成員且不可轉讓。

示例a. 如有必要,重置當前標識值

下例在必要的情況下重置 jobs 表的當前標識值。

use pubs

godbcc checkident (jobs)

gob. 報告當前標識值

下例報告 jobs 表中的當前標識值;如果該標識值不正確,並不對其進行更正。

use pubs

godbcc checkident (jobs, noreseed)

goc. 強制當前標識值為 30

下例強制 jobs 表中的當前標識值為 30。

use pubs

godbcc checkident (jobs, reseed, 30)

go

IDENTITY列的乙個有用操作

dbcccheckident 檢查指定表的當前標識值,如有必要,還對標識值進行更正。語法dbcccheckident table name 引數 table name 是要對其當前標識值進行檢查的表名。指定的表必須包含標識列。noreseed 指定不應更正當前標識值。reseed 指定應該更正當前標...

乙個有用的定理

今天 popoqqq的時候看到了乙個他不屑於證的定理 i 偶數c i,n i 奇數c i,n n不 等於0 怎麼證明呢?開啟口胡模式 n為奇數時顯然 無論選偶數 奇數,剩下的一定是奇數 偶數 n為偶數且n 2為奇數。那我們先考慮n 2的情況,即在n的一半選數。設選奇數的答案集合為 a1,a2,an ...

IDENTITY標識列的一些事

identity標識列的一些事 identity seed increment 可以定義乙個標識列。seed表示種子值 預設為1 increment表示增量 預設為1 一張表只能定義乙個標識列。一.identity列不能保證連續性 identity不能保證標識號是連續的,這是因為如果語句和事務失敗,...