DBCCCHECKIDENT重置数据库标识符列由一定数量的
(n'dbo DBCCCHECKIDENT。订单,补种,0);DBCCCHECKIDENT语法
DBCCCHECKIDENT
(
table_name
{ noreseed,| { { } } } } { new_reseed_value补种。
)
{和}参数no_infomsgs
table_name
要检查其当前标识值的表的名称。指定的表必须包含标识符列。表名必须符合标识符规则。
noreseed
指定当前标识值不应更改。
补种
指定应更改当前标识值。
new_reseed_value
用作标识符列当前值的新值。
与no_infomsgs
取消所有信息性消息。
结果集
无论你是否指定一个表包含标识列的任何选项,DBCCCHECKIDENT返回以下信息(返回值可能不同):
核对身份信息:当前标识值'290,当前列的值,'290。
DBCC执行完毕。如果DBCC输出的错误信息,请联系您的系统管理员。注释
取决于参数规范的更具体的当前标识值。
DBCCCHECKIDENT命令识别校正或校正
DBCCCHECKIDENT(table_name,noreseed)
当前标识值不reset.dbcc checkident将返回当前标识值和标识符列的电流最大值,如果这两个值是不同的,鉴定价值应复位以避免在价值序列中潜在的错误或空白。
DBCCCHECKIDENT(table_name)
也许
DBCCCHECKIDENT(table_name,补种)
如果表的当前标识值小于存储在标识符列中的最大标识值,则使用标识列中的最大值进行重置。
DBCCCHECKIDENT(table_name,补种,new_reseed_value)
设置当前标识值new_reseed_value.if没有行插入表中自表的创建,或所有的线路都是通过使用TRUNCATE TABLE语句删除,然后插入运行DBCCCHECKIDENT第一行之后,将使用new_reseed_value作为标识,否则,下一行插入将使用new_reseed_value +电流增量值。
如果表不是空的,那么当标识值设置为小于标识列中的最大值时,将发生下列情况之一。
如果标识列中有主键或唯一约束,则在执行表中的插入操作时将生成错误消息2627,因为生成的标识值将与现有值相冲突。
如果没有主键或唯一约束,则随后的插入操作将产生重复的标识值。
反常的
下表列出DBCCCHECKIDENT不会自动重置当前标识值的条件,并提供了一种方法来重置价值。
状态复位方法
当前标识值大于表中的最大值。
对DBCCCHECKIDENT执行(table_name,noreseed)可以确定列中的电流的最大值,然后指定值在DBCCCHECKIDENT new_reseed_value(table_name,补种,new_reseed_value)命令。
也许
当new_reseed_value设置到一个很低的值,DBCCCHECKIDENT(table_name,补种,new_reseed_value)被执行,然后DBCCCHECKIDENT(table_name,补种)运行到正确的值。
删除表中的所有行。
DBCCCHECKIDENT(table_name,补种,new_reseed_value)时执行new_reseed_value设置为所需的起始值。
改变种子值
种子值是对装表,插入标识符列的第一行的值。所有的行都包含当前标识值和增量值,其中当前标识值是新的标识值的电流表或视图生成。有关详细信息,参见创作和标识符塔的改造。
你不能使用DBCCCHECKIDENT执行以下任务:
在创建表或视图时更改标识列指定的原始种子值。
重置表或视图中现有行的种子值。
改变原有的种子值和复位所有现有行的种子值,您必须删除并重新创建标识符列,然后指定标识符列一个新的种子值。当表中的数据,识别号添加到现有的行与指定的种子值和增量值。它是无法保证行的顺序进行更新。
管辖权
打电话的人必须有一个表,或sysadmin固定服务器角色的成员,一个db_owner固定数据库角色的成员,或db_ddladmin固定数据库角色。
样品
答:根据需要重置当前标识值。
下面的示例将员工表的当前标识值在AdventureWorks数据库的要求。
使用AdventureWorks;
去
DBCCCHECKIDENT(人力资源。员工);
去
b.报告当前标识值。
下面的示例报告在AdventureWorks数据库中的Employee表的当前标识值,但如果身份是不正确的,它不会被纠正。
使用AdventureWorks;
去
DBCCCHECKIDENT(humanresources.employee,noreseed);
去
强制将当前标识值设置为新值。
下面的例子是被迫在雇员表EmployeeID列300设置当前标识值。因为桌子有一个现有的线,未来将使用301作为一种价值,即当前标识值加1(电流增加值定义的列)。
使用AdventureWorks;
去
DBCCCHECKIDENT(humanresources.employee,补种,300);
去