SET IDENTITY_INSERT tab on
insert into tab(ID,b) values(1,4)
必須這麼寫。
將IDENTITY_INSERT 設為ON時,必須將列寫出來。

解决方案 »

  1.   

    IDENTITYCOL 
    返回标识列。如果 FROM 子句中的多个表内有包含 IDENTITY 属性的列,则必须用特定的表名(如 T1.IDENTITYCOL)限定 IDENTITYCOL。 
    ROWGUIDCOL 
    返回行全局唯一标识列。 
    如果在 FROM 子句中有多个表具有 ROWGUIDCOL 属性,则必须用特定的表名(如 T1.ROWGUIDCOL)限定 ROWGUIDCOL。 
      

  2.   

    懒人吧declare @fieldlist varchar(8000)
    set @fieldlist=''select @fieldlist=@fieldlist+','+name from syscolumns
    where id=object_id('tab')
    order by colorder
    set @fieldlist=left(@fieldlist,len(@fieldlist)-1)
    exec ('insert into tab('+@fieldlist+') values(1,4)')
      

  3.   

    没有办法,普通insert语句中可以省略identity column名字,可是SET IDENTITY_INSERT tab on之后就不行了(这时候暂时的认为是普通列)
      

  4.   

    谢谢 Haiwer(海阔天空) 
    用你的办法是复杂点,但问题总算解决了
      

  5.   

    在SQL Server中可以使用3种方法来获取系统生成的标识值:@@identity、scope_identity()和ident_current(table)。呵呵!~