DBCC CHECKIDENT检查指定表中当前标识值,如有必要,则更改标识值。
1 2 3 4 5 6 |
DBCC CHECKIDENT
(
table_name
[, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
|
参数:
table_name是要对其当前标识值进行检查的表名,表中必须包含标识列。
NORESEED指定不应更改当前标识值。
RESEED指定应该当前标识值。
WITH NO_INFOMSGS取消显示所有信息性信息。
方法:
1)DBCC CHECKIDENT(table_name,NORESEED)
不重置当前标识值。DBCC CHECKIDENT将返回标识列的标识值和当前最大值。如果这两个值不相同,则应重置标识值,以避免值序列中的潜在错误或空白。
2)DBCC CHECKIDENT(table_name)或DBCC CHECKIDENT(table_name,RESEED)
如果表的当前标识值小于表示列中存储的最大标识值,则使用表示列中的最大值对其进行重置。
3)DBCC CHECKIDENT(table_name,RESEED,new_reseed_value)
当前标识值设置为new_reseed_value。如果任何行具有已不插入表,因为该表的创建,或如果已使用Truncate table语句中删除所有行,第一行后运行DBCC CHECKIDENT插入使用new_reseed_value作为标识。
当DBCC CHECKIDENT不自动重置当前标识值时的条件,并提供了重置该值的方法。
1) 当前标识值大于表中的最大值
执行DBCC CHECKIDENT(table_name,NORESEED)来确定在列中,当前最大值,然后指定此值new_reseed_value中DBCC CHECKIDENT(table_name,RESEED,new_reseed_value)命令。
执行DBCC CHECKIDENT(table_name,RESEED,new_reseed_value)与new_reseed_value设置为非常低的值,然后运行DBCC CHECKIDENT(table_name,RESEED)若要更正的值。
2) 删除表中的所有行
执行DBCC CHECKIDENT(table_name,RESEED,new_reseed_value)与new_reseed_value设置为所需的起始值。
权限 DBCC CHECKIDENT 权限默认授予表所有者、sysadmin 固定服务器角色和 db_owner 固定数据库角色的成员且不可转让。 标签:CHECKIDENT,name,new,Server,标识,SQL,table,增列,DBCC From: https://www.cnblogs.com/Thenext/p/17371981.html