当前位置: 首页 > 图文教程 > 数据库 > MSSQL > IDENTITY列的一个有用操作

MSSQL
SQL Server 中死锁产生的原因及解决办法
教你在SQL Server 2000数据库中使用分区
数据仓库基本报表制作过程中的SQL写法
自动定时重启sql server回收内存
轻松解决SQL Server 2005中的常见问题
用一个案例讲解SQL Server数据库恢复
安装SQL Server 2005时出现计数器错误
讲解SQL Server 2005数据库的同义词Bug
利用SQL语句对不同数据库进行高效果分页
三种数据库利用SQL语句进行高效果分页
数据库连接字符串的常见问题和解决方法
教你快速掌握一些方便易用的SQL语句
深入分析SQL Server的数据转换服务
系统默认的MySQL用户名消失的解决方法
SQL 2008邮件故障排除:发送测试电子邮件
SQL Server 2005日志文件损坏的处理方法
在SQL Server 2005数据库中进行错误捕捉
SQL Server查询速度慢原因及优化方法
加密SQL Anywhere 提升政府行业数据安全
Windows Server 2008之数据安全保护

MSSQL 中的 IDENTITY列的一个有用操作


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 170 ::
收藏到网摘: n/a

DBCC CHECKIDENT
检查指定表的当前标识值,如有必要,还对标识值进行更正。

语法
DBCC CHECKIDENT
    ( 'table_name'
        [ , { NORESEED
                | { RESEED ][ , new_reseed_value ] }
            }
        ]
    )

参数
'table_name'
是要对其当前标识值进行检查的表名。指定的表必须包含标识列。

NORESEED
指定不应更正当前标识值。

RESEED
指定应该更正当前标识值。

new_reseed_value
是在标识列中重新赋值时要使用的值。

注释
如有必要,DBCC CHECKIDENT 会更正列的当前标识值。然而,如果标识列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 语句中)创建的,则不更正当前标识值。
如果标识列上有主键或唯一键约束,无效标识信息可能会导致错误信息 2627。

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。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。

当前标识值可以大于表中的最大值。在此情况下,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)。
结果集
不管是否指定任何选项(针对于包含标识列的表;下例使用 pubs 数据库的 jobs 表),DBCC CHECKIDENT 返回以下结果集(值可能会有变化):

Checking identity information: current identity value '14', current column value '14'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

权限
DBCC CHECKIDENT 权限默认授予表所有者、sysadmin 固定服务器角色和 db_owner 固定数据库角色的成员且不可转让。

示例
A. 如有必要,重置当前标识值
下例在必要的情况下重置 jobs 表的当前标识值。

USE pubs
GO
DBCC CHECKIDENT (jobs)
GO

B. 报告当前标识值
下例报告 jobs 表中的当前标识值;如果该标识值不正确,并不对其进行更正。

USE pubs
GO
DBCC CHECKIDENT (jobs, NORESEED)
GO

C. 强制当前标识值为 30
下例强制 jobs 表中的当前标识值为 30。

USE pubs
GO
DBCC CHECKIDENT (jobs, RESEED, 30)
GO