SQL Server 中调整自增字段的当前初始值

 更新时间:2007年01月08日 00:00:00   作者:  
前几天在把一个Communtiy Server 的数据库从SQL 2000升级到SQL 2005 的时候,碰到一个怪异的问题,报如下错误:

Violation of PRIMARY KEY constraint 'PK_cs_Threads'. Cannot insert duplicate key in object 'dbo.cs_Threads'.

分析进去后,竟然发现这个表的自增字段数据库中已经达到了6144,而数据库维护的这个表的初始自增值只到6109。

解决方法很简单,利用以下SQL 语句即可搞定:

DBCC CHECKIDENT ('cs_Threads')

上述语句的意思就是:如果表'cs_Threads'的当前标识值小于列中存储的最大标识值,则使用标识列中的最大值对其进行重置。

CHECKIDENT 命令可以有以下几种写法:

1、DBCC CHECKIDENT ('table_name', NORESEED) 

不重置当前标识值。DBCC CHECKIDENT 返回一个报表,它指明当前标识值和应有的标识值。 

类似如下的报表:

Checking identity information: current identity value '6109', current column value '6144'.

2、DBCC CHECKIDENT ('table_name') 或DBCC CHECKIDENT ('table_name', RESEED) 

如果表的当前标识值小于列中存储的最大标识值,则使用标识列中的最大值对其进行重置。

上述命令执行的时候,也会报类似上面的报表。

3、DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 

当前值设置为 new_reseed_value。

如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。

如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。

相关文章

  • 浅述SQL Server的聚焦强制索引查询条件和Columnstore Index

    浅述SQL Server的聚焦强制索引查询条件和Columnstore Index

    本文主要讲了强制使用索引条件来进行查询,当对于使用默认创建索引进行查询计划时觉得不是最优解,可以尝试使用强制索引来进行对比找出更好得解决方案。简短的内容,深入的理解.有兴趣的朋友可以看下
    2016-12-12
  • sqlserver 局部变量的使用

    sqlserver 局部变量的使用

    在SQL中我们或许会使用到局部变量的问题,下面给出微软的两个小例子
    2010-06-06
  • SQLSERVER 时间格式大全

    SQLSERVER 时间格式大全

    最近在写程序的过程中有遇到SQL SERVER时间格式的问题,一时想不起来,上网搜索了一下,这方面的资料还真不少,找了一个比较全面的。
    2010-05-05
  • 教你几种在SQLServer中删除重复数据方法

    教你几种在SQLServer中删除重复数据方法

    数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
    2010-04-04
  • sql server 表结构修改方法

    sql server 表结构修改方法

    如果我们需要修改sql server表结构,应该怎么做呢?接下来将为您介绍修改sql server表结构的方法,需要的朋友可以参考下
    2012-11-11
  • Sql Server中判断表、列不存在则创建的方法

    Sql Server中判断表、列不存在则创建的方法

    这篇文章主要给大家分享了Sql Server中判断表、列是否存在,如果不存在则创建的方法,文章先给大家简单介绍了Sql Server中判断表中某列是否存在的方法,文中给出了详细的示例代码,需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • SQL Server 复制需要有实际的服务器名称才能连接到服务器

    SQL Server 复制需要有实际的服务器名称才能连接到服务器

    今天在做sql Server 2005的实验的时候碰到的问题,问题描述很清楚,怀疑是我以前给计算机修改了名称而导致的.可以用select @@servername和select serverproperty ('servername')对照一下,两个的结果是否一样
    2012-06-06
  • sql表连接查询使用方法(sql多表连接查询)

    sql表连接查询使用方法(sql多表连接查询)

    表连接就是通过关联多张表,从而检索出需要的数据的方法,下面我们通过代码示例来学习一下sql的表连接使用方法
    2014-01-01
  • SQL Server分页方法汇总

    SQL Server分页方法汇总

    这篇文章介绍了SQL Server分页的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • sql数据库不能直接用instr函数

    sql数据库不能直接用instr函数

    sql数据库不能直接用instr函数...
    2007-01-01

最新评论