sqlserver2008如何让sqlserver的自增字段用sql语句打开加1或者关闭(我用了 alter table a alter column ID int identity(1,1)   Msg 156, Level 15, State 1, Line 3
关键字 'identity' 附近有语法错误。失败
: SET IDENTITY_INSERT dbo.a OFF  失败的最后
[20:42:41] bruce says: Alter table table1 alter column column1 Identity(1,1);Alter table table1 ADD CONSTRAINT column1_def Identity(1,1) FOR column1they all can not work,也失败)这些id来自原始数据源,他的id并不是连续的。 所以无法加一个字增字段复制来解决。问题如何让sqlserver的自增字段用sql语句打开加1或者关闭
(我用etl把数据导过来 之后必须用pk 自增的id来让.net开发 使用)

解决方案 »

  1.   

    alter table tb
    drop column  id 
    goalter table tb
    add id int identity(1,1)select * from tb
      

  2.   

    --设置允许显式插入自增列
    SET IDENTITY_INSERT tablename  ON
    --当然插入完毕记得要设置不允许显式插入自增列
    SET IDENTITY_INSERT tablename  OFF
      

  3.   

    这个是失败的
    --设置允许显式插入自增列
    SET IDENTITY_INSERT tablename  ON
    --当然插入完毕记得要设置不允许显式插入自增列
    SET IDENTITY_INSERT tablename  OFF删除重建一--------------不可能的
    因为原有的不连续的id 的植是一定要保留.否则重建会丢失那些很重要的id 值
      

  4.   

    create table temp
    (
    id int identity,
    [name] varchar(100)
    )insert temp
    select 'a' union all
    select 'b'--#1. 备份表
    --#2. 把数据全部写到临时表
    select [newid] = id + 1, [name] into #temp from temp
    --#3. 清空原表
    truncate table temp
    --#4. 设置允许插入id
    SET IDENTITY_INSERT temp  ON
    --#5. 插入数据
    insert into temp(id, [name])
    select * from #temp
    --36. 设置不允许插入id
    SET IDENTITY_INSERT temp  OFF--结果
    select * from temp
      

  5.   


    SET IDENTITY_INSERT   tbname ON
    insert 操作...
    SET IDENTITY_INSERT tbname  OFF这个失败的?
    那就是你insert的语句问题
      

  6.   

    感谢通过
    SET IDENTITY_INSERT   aa ON
    insert aa(a,id) values(2,3);
    SET IDENTITY_INSERT aa  OFF
      

  7.   

    遇新问题  SET IDENTITY_INSERT   aa ON
    update aa set id=10 where id=1;
    SET IDENTITY_INSERT aa  OFFMsg 8102, Level 16, State 1, Line 3
    Cannot update identity column 'id'.插入解决 ,更新这个id 如何做>?
      

  8.   

    先不考虑 update我用了2008  ssis工具 如何在这个工具里实现先 SET IDENTITY_INSERT aa ON
    把数据导完后(这个使用数据流 )
    再 启用 SET IDENTITY_INSERT aa OFFSET IDENTITY_INSERT aa ONSET IDENTITY_INSERT aa OFF  这2个如何用ssis的什么项目来实现 (我用了‘Execute SQL task’死活通不过)。 关键这3步必须放到一个session里 。 不知道如何用ssis来实现