国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

DBCC CHECKIDENT 重置數據庫標識列從某一數值開始

2020-07-25 13:29:46
字體:
來源:轉載
供稿:網友
DBCC CHECKIDENT(N'dbo.Orders', RESEED, 0);

DBCC CHECKIDENT 語法
DBCC CHECKIDENT
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]參數
table_name
是要對其當前標識值進行檢查的表名。指定的表必須包含標識列。表名必須符合標識符規則。
NORESEED
指定不應更改當前標識值。
RESEED
指定應該更改當前標識值。
new_reseed_value
用作標識列的當前值的新值。
WITH NO_INFOMSGS
取消顯示所有信息性消息。
結果集
無論是否為包含標識列的表指定了任何選項,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.注釋
對當前標識值所做的具體更正取決于參數規范。
DBCC CHECKIDENT 命令 標識更正或所做的更正
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。如果自從創建表以來未在表中插入任何行,或者已使用 TRUNCATE TABLE 語句刪除所有行,則在運行 DBCC CHECKIDENT 之后插入的第一行將使用 new_reseed_value 作為標識。否則,插入的下一行將使用 new_reseed_value + 當前增量值。
如果該表不為空,那么將標識值設置為小于標識列中的最大值的數字時,將會出現下列情況之一:
如果標識列中存在 PRIMARY KEY 或 UNIQUE 約束,則隨后在表中執行插入操作時將生成錯誤消息 2627,原因是生成的標識值將與現有值沖突。
如果不存在 PRIMARY KEY 或 UNIQUE 約束,則隨后的插入操作將產生重復的標識值。
異常
下表列出了 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) 以更正該值。
刪除表中的所有行。
在將 new_reseed_value 設置為所需開始值的情況下執行 DBCC CHECKIDENT (table_name, RESEED, new_reseed_value)。
更改種子值
種子值是針對裝入表的第一行插入到標識列的值。所有后續行都包含當前標識值和增量值,其中當前標識值是為當前表或視圖生成的最新標識值。有關詳細信息,請參閱創建和修改標識符列。
不能使用 DBCC CHECKIDENT 執行下列任務:
更改創建表或視圖時為標識列指定的原始種子值。
重設表或視圖中的現有行的種子值。
若要更改原始種子值并重設所有現有行的種子值,必須刪除并重新創建標識列,然后為標識列指定新的種子值。當表包含數據時,還會將標識號添加到具有指定種子值和增量值的現有行中。無法保證行的更新順序。
權限
調用方必須擁有表,或者是 sysadmin 固定服務器角色、db_owner 固定數據庫角色或 db_ddladmin 固定數據庫角色的成員。
示例
A. 根據需要重置當前標識值
以下示例根據需要重置 AdventureWorks 數據庫中 Employee 表的當前標識值。
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee");
GO
B. 報告當前標識值
以下示例報告 AdventureWorks 數據庫的 Employee 表中的當前標識值,但如果該標識值不正確,不會進行更正。
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", NORESEED);
GO
C. 強制將當前標識值設為新值
以下示例強制將 Employee 表中的 EmployeeID 列中的當前標識值設置為 300。因為該表有現有行,因此下一個插入行將使用 301 作為值,即當前標識值加上 1(為該列定義的當前增加值)。
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 300);
GO

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 威信县| 思茅市| 徐州市| 浮山县| 寻乌县| 垫江县| 宁国市| 宜春市| 吉林市| 南涧| 平武县| 阿尔山市| 美姑县| 神池县| 闵行区| 桂东县| 汪清县| 普宁市| 梁平县| 乌海市| 吴堡县| 霍邱县| 安康市| 托克托县| 遵义市| 赤城县| 四会市| 长武县| 抚顺市| 望城县| 墨竹工卡县| 鱼台县| 宁南县| 桐梓县| 虞城县| 长泰县| 北安市| 乌审旗| 巴青县| 漳州市| 渭南市|