≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

SQL Server DBCC CHECKIDENT 重置数据库标识列从某一数值开始

人气:460 时间:2019-06-01

这篇文章主要为大家详细介绍了SQL Server DBCC CHECKIDENT 重置数据库标识列从某一数值开始,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

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
 

本文来自:http://www.q1010.com/179/7528-0.html

注:关于SQL Server DBCC CHECKIDENT 重置数据库标识列从某一数值开始的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:SQL SERVER

您可能感兴趣的文章

  • 用户"sa"登陆失败 SQLServer 错误18456的解决方法
  • SQL Server做购物车系统时利用到得几个sqlserver 存储过程
  • SQLServer 优化SQL语句 in 和not in的替代方案
  • win2003 安装 sqlserver 2005的方法
  • SQL Server当恢复sqlserver bak文件时,原始的用户无法删除的解决方法
  • SQL Server分页存储过程(三)在sqlserver中打造更加准确的分页结果
  • 分页存储过程(二)在sqlserver中返回更加准确的分页结果
  • SQLServer上查看SQL语句的执行时间的方法
  • SQL Server 2000数据库同步 同步两个SQLServer数据库的内容
  • SQLServer触发器创建、删除、修改、查看示例代码
上一篇:SQL Server sql 时间函数 整理的比较全了
下一篇:SQL Server 数据整理方法
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。