DBCC CHECKIDENT(N'dbo.Orders', RESEED, 0);
DBCC CHECKIDENT 語(yǔ)法
DBCC CHECKIDENT
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]參數(shù)
table_name
是要對(duì)其當(dāng)前標(biāo)識(shí)值進(jìn)行檢查的表名。指定的表必須包含標(biāo)識(shí)列。表名必須符合標(biāo)識(shí)符規(guī)則。
NORESEED
指定不應(yīng)更改當(dāng)前標(biāo)識(shí)值。
RESEED
指定應(yīng)該更改當(dāng)前標(biāo)識(shí)值。
new_reseed_value
用作標(biāo)識(shí)列的當(dāng)前值的新值。
WITH NO_INFOMSGS
取消顯示所有信息性消息。
結(jié)果集
無(wú)論是否為包含標(biāo)識(shí)列的表指定了任何選項(xiàng),DBCC CHECKIDENT 都返回以下信息(返回值可能有所不同):
Checking identity information: current identity value '290', current column value '290'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.注釋
對(duì)當(dāng)前標(biāo)識(shí)值所做的具體更正取決于參數(shù)規(guī)范。
DBCC CHECKIDENT 命令 標(biāo)識(shí)更正或所做的更正
DBCC CHECKIDENT ( table_name, NORESEED )
不重置當(dāng)前標(biāo)識(shí)值。DBCC CHECKIDENT 將返回標(biāo)識(shí)列的當(dāng)前標(biāo)識(shí)值和當(dāng)前最大值。如果這兩個(gè)值不相同,則應(yīng)重置標(biāo)識(shí)值,以避免值序列中的潛在錯(cuò)誤或空白。
DBCC CHECKIDENT ( table_name )
或者
DBCC CHECKIDENT ( table_name, RESEED )
如果表的當(dāng)前標(biāo)識(shí)值小于標(biāo)識(shí)列中存儲(chǔ)的最大標(biāo)識(shí)值,則使用標(biāo)識(shí)列中的最大值對(duì)其進(jìn)行重置。
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )
將當(dāng)前標(biāo)識(shí)值設(shè)置為 new_reseed_value。如果自從創(chuàng)建表以來(lái)未在表中插入任何行,或者已使用 TRUNCATE TABLE 語(yǔ)句刪除所有行,則在運(yùn)行 DBCC CHECKIDENT 之后插入的第一行將使用 new_reseed_value 作為標(biāo)識(shí)。否則,插入的下一行將使用 new_reseed_value + 當(dāng)前增量值。
如果該表不為空,那么將標(biāo)識(shí)值設(shè)置為小于標(biāo)識(shí)列中的最大值的數(shù)字時(shí),將會(huì)出現(xiàn)下列情況之一:
如果標(biāo)識(shí)列中存在 PRIMARY KEY 或 UNIQUE 約束,則隨后在表中執(zhí)行插入操作時(shí)將生成錯(cuò)誤消息 2627,原因是生成的標(biāo)識(shí)值將與現(xiàn)有值沖突。
如果不存在 PRIMARY KEY 或 UNIQUE 約束,則隨后的插入操作將產(chǎn)生重復(fù)的標(biāo)識(shí)值。
異常
下表列出了 DBCC CHECKIDENT 不自動(dòng)重置當(dāng)前標(biāo)識(shí)值時(shí)的條件,并提供了重置該值的方法。
條件 重置方法
當(dāng)前標(biāo)識(shí)值大于表中的最大值。
執(zhí)行 DBCC CHECKIDENT (table_name, NORESEED) 可以確定列中的當(dāng)前最大值,然后指定該值作為 DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) 命令中的 new_reseed_value。
或者
在將 new_reseed_value 設(shè)置為非常低的值的情況下執(zhí)行 DBCC CHECKIDENT (table_name, RESEED, new_reseed_value),然后運(yùn)行 DBCC CHECKIDENT (table_name, RESEED) 以更正該值。
刪除表中的所有行。
在將 new_reseed_value 設(shè)置為所需開(kāi)始值的情況下執(zhí)行 DBCC CHECKIDENT (table_name, RESEED, new_reseed_value)。
更改種子值
種子值是針對(duì)裝入表的第一行插入到標(biāo)識(shí)列的值。所有后續(xù)行都包含當(dāng)前標(biāo)識(shí)值和增量值,其中當(dāng)前標(biāo)識(shí)值是為當(dāng)前表或視圖生成的最新標(biāo)識(shí)值。有關(guān)詳細(xì)信息,請(qǐng)參閱創(chuàng)建和修改標(biāo)識(shí)符列。
不能使用 DBCC CHECKIDENT 執(zhí)行下列任務(wù):
更改創(chuàng)建表或視圖時(shí)為標(biāo)識(shí)列指定的原始種子值。
重設(shè)表或視圖中的現(xiàn)有行的種子值。
若要更改原始種子值并重設(shè)所有現(xiàn)有行的種子值,必須刪除并重新創(chuàng)建標(biāo)識(shí)列,然后為標(biāo)識(shí)列指定新的種子值。當(dāng)表包含數(shù)據(jù)時(shí),還會(huì)將標(biāo)識(shí)號(hào)添加到具有指定種子值和增量值的現(xiàn)有行中。無(wú)法保證行的更新順序。
權(quán)限
調(diào)用方必須擁有表,或者是 sysadmin 固定服務(wù)器角色、db_owner 固定數(shù)據(jù)庫(kù)角色或 db_ddladmin 固定數(shù)據(jù)庫(kù)角色的成員。
示例
A. 根據(jù)需要重置當(dāng)前標(biāo)識(shí)值
以下示例根據(jù)需要重置 AdventureWorks 數(shù)據(jù)庫(kù)中 Employee 表的當(dāng)前標(biāo)識(shí)值。
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee");
GO
B. 報(bào)告當(dāng)前標(biāo)識(shí)值
以下示例報(bào)告 AdventureWorks 數(shù)據(jù)庫(kù)的 Employee 表中的當(dāng)前標(biāo)識(shí)值,但如果該標(biāo)識(shí)值不正確,不會(huì)進(jìn)行更正。
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", NORESEED);
GO
C. 強(qiáng)制將當(dāng)前標(biāo)識(shí)值設(shè)為新值
以下示例強(qiáng)制將 Employee 表中的 EmployeeID 列中的當(dāng)前標(biāo)識(shí)值設(shè)置為 300。因?yàn)樵摫碛鞋F(xiàn)有行,因此下一個(gè)插入行將使用 301 作為值,即當(dāng)前標(biāo)識(shí)值加上 1(為該列定義的當(dāng)前增加值)。
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 300);
GO
DBCC CHECKIDENT 重置數(shù)據(jù)庫(kù)標(biāo)識(shí)列從某一數(shù)值開(kāi)始
2019-11-18 14:56mssql教程網(wǎng) Sql Server
DBCC CHECKIDENT 重置數(shù)據(jù)庫(kù)標(biāo)識(shí)列從某一數(shù)值開(kāi)始
延伸 · 閱讀
- 2020-07-02SQLServer 2008中通過(guò)DBCC OPENTRAN和會(huì)話查詢事務(wù)
- 2020-04-13Sql Server中的DBCC命令詳細(xì)介紹
- 2019-12-28SQL Server誤區(qū)30日談 第27天 使用BACKUP WITH CHECKSUM可
- 2019-12-27SQL Server誤區(qū)30日談 第2天 DBCC CHECKDB會(huì)導(dǎo)致阻塞
- 2019-11-18SQLServer 數(shù)據(jù)修復(fù)命令DBCC一覽
- Sql Server
SQL_Server全文索引的用法解析
SQL Server全文索引相信大家都有一定的了解,下面就為您介紹SQL Server全文索引的用法及相關(guān)的語(yǔ)句,希望可以讓您對(duì)SQL Server全文索引能有更深的認(rèn)識(shí) ...
- Sql Server
SQLServer2005 批量查詢自定義對(duì)象腳本
SQLServer2005 批量查詢自定義對(duì)象腳本,使用系統(tǒng)函數(shù)object_definition和系統(tǒng)表 sysobjects 就可以了 ...
- Sql Server
SQL2005 存儲(chǔ)過(guò)程解密方法
SQL2005 存儲(chǔ)過(guò)程解密方法,需要的朋友可以參考下。...
- Sql Server
SQL JOIN 連接詳細(xì)介紹及簡(jiǎn)單使用實(shí)例
這篇文章主要介紹了SQL JOIN 連接詳細(xì)介紹及簡(jiǎn)單使用實(shí)例的相關(guān)資料,需要的朋友可以參考下 ...
- Sql Server
深入SQLServer中ISNULL與NULLIF的使用詳解
本篇文章是對(duì)SQLServer中ISNULL與NULLIF的使用進(jìn)行了詳細(xì)分析介紹,需要的朋友參考下 ...
- Sql Server
SQLServer 數(shù)據(jù)庫(kù)的數(shù)據(jù)匯總完全解析(WITH ROLLUP)
乍一看,好像很容易,用group by好像能實(shí)現(xiàn)?但仔細(xì)研究下去,你又會(huì)覺(jué)得group by也是無(wú)能為力,總欠缺點(diǎn)什么,無(wú)從下手。那么,到底該如何做呢?別急,...
- Sql Server
三種SQL分頁(yè)查詢的存儲(chǔ)過(guò)程代碼
三種SQL分頁(yè)查詢的存儲(chǔ)過(guò)程代碼,需要的朋友可以參考下。 ...
- Sql Server
SQLServer2005創(chuàng)建定時(shí)作業(yè)任務(wù)
這篇文章主要為大家介紹了SQLServer2005創(chuàng)建定時(shí)作業(yè)任務(wù)的詳細(xì)過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 ...