语法
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

转自:http://msdn.microsoft.com/zh-cn/library/ms176057.aspx

转载于:https://www.cnblogs.com/wenanry/archive/2009/12/07/1618852.html

DBCC CHECKIDENT相关推荐

  1. 关于truncate与checkident

    今天一个同学在弄一个程序的时候想要初始化所有新建的表,决定使用truncate table xx来进行初始化,但始终报外间约束,初始化失败,奇怪,难道没有将主表关联的 其他表的记录删除吗,查看后将所有 ...

  2. SQL SERVER DBCC 命令集整理

    为什么80%的码农都做不了架构师?>>>    1. DBCC CHECKALLOC 检查指定数据库的磁盘空间分配结构的一致性. DBCC CHECKALLOC [     (dat ...

  3. 《Microsoft Sql server 2008 Internals》读书笔记--第十一章DBCC Internals(11)

    <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...

  4. sql server 碎片整理——DBCC SHOWCONTIG

    转自: 1.http://blog.sina.com.cn/s/blog_6d2675450101ks6i.html 2.http://www.cnblogs.com/CareySon/archive ...

  5. SQL Server DBCC

    一.什么是DBCC DBCC 是SQL Server提供的一组控制台命令,可以用来检查数据库的逻辑一致性及物理一致性. 二.DBCC分类 1.维护语句 对数据库.索引或文件组进行维护的任务. 2.杂项 ...

  6. SQL Server中Identity标识列

    SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便.但它有时还会带来一些麻烦. SQL Server中,经常会用到Identity标识列,这种自增长的字段 ...

  7. Truncate 删除数据

    引用:http://baike.baidu.com/view/1230585.htm Truncate是SQL中的一个删除数据表内容的语句,用法是: 语法 TRUNCATE TABLE name 参数 ...

  8. SQL Server 自动增长清零

    方法1:  truncate table TableName删除表中的所有的数据的同时,将自动增长清零. 如果有外键参考这个表,这个方法会报错(即便主键表和外键表都已经没有数据),请参考方法2. PS ...

  9. 重置SQLSERVER表的自增列,让自增列重新计数

    SQL的自增列挺好用,只是开发过程中一旦删除数据,标识列就不连续了 写起来 也很郁闷,所以查阅了一下标识列重置的方法 发现可以分为三种: --- 删除原表数据,并重置自增列 truncate tabl ...

最新文章

  1. 简介+原理+绘制,详解 Python「瀑布图」的整个制作流程!
  2. APP元素定位操作API
  3. phd for engineering at industry
  4. apeach和php合作原理,apache与php工作原理分析
  5. 216. Combination Sum III 组合总和 III
  6. idea创建标准的meaven项目
  7. git 拉取代码失败
  8. nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
  9. C语言:鸡兔同笼问题(基础代码)
  10. 《机器学习》周志华第一章课后习题
  11. MongoDB——聚合管道之$limit$skip$sort操作
  12. GIF动态图制作工具(免费),附教程
  13. springboo+elasticsearch+经纬度查询
  14. 用计算机验证克莱姆法则,克莱姆法则的几种证明方法
  15. 什么是网络营销?网络营销简介
  16. 【论文阅读】Attention Based Spatial-Temporal GCN...Traffic Flow Forecasting[基于注意力的时空图卷积网络交通流预测](1)
  17. 想要提升工作效率,教你一招事半功倍
  18. 我来告诉你代码重构有什么好处
  19. i2C设备地址怎么看?
  20. mongodb 计算坐标距离

热门文章

  1. 020_MySQL运算符
  2. mysql pricing amp; licensing_Global Pricing and Licensing
  3. vc2005运行库彻底卸载_解决不安装VC运行库(VC2005,VC2008),程序运行出错的方法...
  4. internetreadfile读取数据长度为0_Datax3.0的安装和基本使用
  5. Java数据结构与算法:堆
  6. python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的
  7. python将图片转动漫_如何把照片变成手绘动漫化?
  8. cad文字提取到excel_干货!南方CASS设计土石方方格网点上提取高程方法
  9. 视频播放页php,html jquery简易视频播放器
  10. android多功能计算器 源码,Android计算器源码