------去标识   ++++网上的方法
  alter   table   tablename   add   id1   int   
    
  update   tablename   set   id1=id   
    
  alter   table   tablename   drop   column   id   
    
  exec   sp_rename   'tablename.id1','id'   
    
  或   
    
  select   cast   (id   as   int)   id,列.....   into   #temp   from   表   
  drop   table   表   
  select   *   into   表   from   #temp   
  drop   table   #temp=========================================================
该方法会改变原有的数据结构。
就不能用sql语句实现类似于‘企业管理器’直接编辑‘标识’为‘否’的功能嘛?

解决方案 »

  1.   

    1、删除重新建立,如你列的方法
    2、SET IDENTITY_INSERT 允许将显式值插入表的标识列中。
      

  2.   

    该方法会改变原有的数据结构。 
    就不能用sql语句实现类似于‘企业管理器’直接编辑‘标识’为‘否’的功能嘛? 
    原理一样,楼主可通过生成脚本查看
    在企业管理里改是先创建新表;用数据导入新表;再删除旧表;重命名新表名为旧表
      

  3.   

    如下格式; 2000可以改系统表(不推荐使用)
    create table Test(ID int identity,Name nvarchar(10))
    go
    /* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之外运行此脚本。*/
    BEGIN TRANSACTION
    SET QUOTED_IDENTIFIER ON
    SET ARITHABORT ON
    SET NUMERIC_ROUNDABORT OFF
    SET CONCAT_NULL_YIELDS_NULL ON
    SET ANSI_NULLS ON
    SET ANSI_PADDING ON
    SET ANSI_WARNINGS ON
    COMMIT
    BEGIN TRANSACTION
    GO
    CREATE TABLE dbo.Tmp_Test
    (
    ID int NOT NULL,
    Name nvarchar(10) NULL
    )  ON [PRIMARY]
    GO
    IF EXISTS(SELECT * FROM dbo.Test)
     EXEC('INSERT INTO dbo.Tmp_Test (ID, Name)
    SELECT ID, Name FROM dbo.Test WITH (HOLDLOCK TABLOCKX)')
    GO
    DROP TABLE dbo.Test
    GO
    EXECUTE sp_rename N'dbo.Tmp_Test', N'Test', 'OBJECT' 
    GO
    COMMIT
      

  4.   


    2的方法我用过,但修改其值时总是失败,无论是on还是off
    SET IDENTITY_INSERT table off
    错误提示:仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'table_name' 中为标识列指定显式值。
      

  5.   


    不应该吧,参:
    http://blog.csdn.net/happyflystone/archive/2007/11/25/1901966.aspx