SQLServer数据库DBCC CHECKIDENT命令介绍

在SQLServer输入数据时,碰到有主键ID需要维护时,可使用IDENT_CURRENT和CHECKIDENT命令来维护。

IDENT_CURRENT命令返回指定表或视图生成的最后一个标识值。用法如下:

   IDENT_CURRENT(‘table_name‘)

返回类型numeric(38,0).

DBCC  CHECKIDENT命令用于检查或指定当前表/视图的标识值。用法如下:

DBCC CHECKIDENT

(

     table_name

          [, {NORESEED | {RESEED [, new_reseed_value] } } ]

)

[WITH NO_INFOSGS]

一般我们的用法如下:

1) 查看且如有必要更正当前标识值:

DBCC CHECKIDENT(‘table_name‘)

2) 查看当前标识值,即使有错也不视图更正:

DBCC CHECKIDENT(‘table_name‘, NORESEED)

3) 指定新的标识值:

DBCC CHECKIDENT(‘table_name‘, NORESEED, new_reseed_value)

WITH NO_INFOSGS是关闭消息提示。

--------------------------------------------------

需要注意的问题:

当设置的new_reseed_value小于表中主键ID的值时,后续再插入过程中会出现以下错误:

a) 当主键或唯一约束存在时,会报2627错误,因为当前的主键值已在数据表中,产生冲突;

b) 当主键或唯一约束不存在时,会报重复主键错误。

解决方法:

先使用select max(id) from table_name, 查询出表中最大的ID,然后重新设置一个比其打的new_reseed_value;

如果表中数据已经删除,可以使用DBCC CHECKIDENT(‘table_name‘, NORESEED, 1)置为1,然后用DBCC CHECKIDEN(‘table_name‘)来修正。

另外,在SQL中,如果要插入ID,一般我们可以用select IDENT_CURRENT(‘table_name‘)+1 来插入比当前序列值多1的值。

参考:  https://msdn.microsoft.com/en-us/library/ms176057.aspx

https://msdn.microsoft.com/en-us/library/ms175098.aspx

时间: 2024-10-23 00:30:48

SQLServer数据库DBCC CHECKIDENT命令介绍的相关文章

Holer实现外网访问本地SQLServer数据库

外网访问内网SQLServer数据库 内网主机上安装了SQLServer数据库,只能在局域网内访问,怎样从公网也能访问本地SQLServer数据库? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动SQLServer数据库 默认安装的SQLServer数据库端口是1433. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取h

第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(3)

原文:第三章--使用系统函数.存储过程和DBCC SQLPERF命令来监控SQLServer(3) 本文为这个系列最后一篇.将是如何使用DBCC命令来监控SQLServer日志空间的使用情况. 前言: 每个数据库都必须有事务日志.事务日志记录每个DML操作,并应用于SQLServer的数据库中,如果恢复模式为FULL并经常有DML操作,日志将增长得非常快.几时恢复模式为simple,当数据库处于事务复制或者合并复制时,日志通常会增长.如果日志不是经常备份且日志文件的增长没有受到限制的话,将有可能

SQLSERVER数据库、表的创建及SQL语句命令

SQLSERVER数据库,安装.备份.还原等问题: 一.存在已安装了sql server 2000,或2005等数据库,再次安装2008,会出现的问题 1.卸载原来的sql server 2000.2005,然后再安装sqlserver 2008,否则经常sql server服务启动不了 2.sql server服务启动失败,解决方法: 进入sql serverconfigure manager,点开 Sql server 网络配置(非sql native client 配置),点sqlzhh(

命令行下从bak文件恢复sqlserver数据库方法

http://blog.sina.com.cn/s/blog_5cdf6f450102dwir.html 1.先使用restore filelistonly restore filelistonly from disk = 'E:\BaiduYunDownload\shifenzheng.bak' 2.进行恢复 restore database kaifang from disk = 'E:\BaiduYunDownload\shifenzheng.bak' with move 'linshi'

(转)对SQLSERVER数据库事务日志的疑问

本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/06/10/3130856.html 对SQLSERVER数据库事务日志的疑问 摸不透SQLSERVER了 实验环境:SQLSERVER2005 SP4,Windows7 本来没什么心情写文章,反正没人看,关于我文章中提到的问题,有些可以从文章结尾的MSDN补充那里找到答案,而有些还没有答案 根据CSDN博客的这篇文章介绍,大家可以先看一下,然后再继续往下看,因为下面会引用到CSDN博客里的

SQLServer数据库自增长标识列的更新修改操作

SQLServer数据库自增长标识列的更新修改操作方法在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号.比如文章编号.记录序号等等.自增长的标识列的引用很大程度上方便了数据库程序的开发,但是有时这个固执的字段类型也会带来一些麻烦. 一.修改标识列字段的值:(在执行insert时,将ID手动的设置成想要的值)有时,为了实现某个功能,需要修改类型为Identity自增长类型的字段的值,但由于标识的类型所限,这种操作默认是不允许的.比如,目前数据库有

VB语言使用ADO连接、操作SQLServer数据库教程

VB语言使用ADO连接.操作SQLServer数据库教程 这篇文章主要介绍了VB语言使用ADO连接.操作SQLServer数据库教程,本文讲解详细.代码中有大量注释,是非常好的一篇教程,需要的朋友可以参考下 几年前学过的VB几乎忘光了,这几天复习了下.VB连接ADO数据库并不是非常难. 连接第一步(要仔细看) 对于小白来讲,这里的教程最详细,连接ADO数据库第一步,要添加什么部件呢?全称是Microsoft ADO Data Control 6.0 (SP6) (OLEDB) 部件. 在Micr

DBCC常用命令小汇

DBCC是SQL Server提供的一组控制台命令,功能很强大,掌握一些必要的语句,对操作数据库有不少帮助,所以决定整理一下,发现已有不少类似的整理,减少了不少工作,归类如下: 一.DBCC 帮助类命令 * DBCC HELP('?') 查询所有的DBCC命令 * DBCC HELP('checktable') 查询指定的DBCC命令的语法说明 * DBCC USEROPTIONS 返回当前连接的活动(设置)的SET选项 二.DBCC 检查验证类命令 * DBCC CHECKALLOC ('数据

sqlserver数据库出现可疑错误修复方法

一.主数据库出现可疑修复方法: 第一种方法: 当数据库发生这种操作故障时,可以按如下操作步骤可处理此要领,打开数据库里的Sql查询编辑器窗口,运行以下的命令: ?修改数据库为紧急模式 ALTER DATABASE 数据库名 SET EMERGENCY ?使数据库变为单用户模式 ALTER DATABASE 数据库名 SET SINGLE_USER ?修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对 象不正确.当您指定“REPAIR_ALLOW_DATA_LOSS”作为