有个问题请教各位大侠:
当在一个会话中使用SET IDENTITY_INSERT XXX ON 暂停一个表的自增列自增期间,另外一个会话中对该表insert记录时,会不会出错?就是说SET IDENTITY_INSERT XXX ON的作用范围是针对整个表还是仅仅在所在会话中有效?
谢谢!

解决方案 »

  1.   


    SET IDENTITY_INSERT XXX ON 


    SET IDENTITY_INSERT在其中有效
      

  2.   

    SET IDENTITY_INSERT XXX ON 


    SET IDENTITY_INSERT XXX OFF
      

  3.   

    create table ttt(id int identity(1,1),name varchar(10))SET IDENTITY_INSERT ttt ON
    insert into ttt(id,name)
    select 11,'aa'
    /*
    (所影响的行数为 1 行)
    */--开启另外一个进程执行insert
    insert into ttt(id,name)
    select 50,'aa'
    /*
    服务器: 消息 544,级别 16,状态 1,行 1
    当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'ttt' 中的标识列插入显式值。
    */drop table ttt--结论SET IDENTITY_INSERT ON/OFF对当前会话有效
      

  4.   

    我的意思是,在会话1中暂停自增期间如果有另外的会话对该表执行insert操作,会不会因为会话1中暂停自增而失败?
    因为要对一个正在使用的系统在后台进行一些数据恢复,恢复一个含自增列的表中一些被删除的数据,这样会不会影响系统的正常使用?
      

  5.   

    难道lz你没看到gahade(与君共勉) ( ) 的试验么?