--创建了表Tool
CREATE TABLE dbo.Tool(
   ID INT IDENTITY NOT NULL PRIMARY KEY, 
   Name VARCHAR(40) NOT NULL
)
GO--插入数据
INSERT INTO dbo.Tool(Name) VALUES ('Screwdriver')
INSERT INTO dbo.Tool(Name) VALUES ('Hammer')
INSERT INTO dbo.Tool(Name) VALUES ('Saw')
INSERT INTO dbo.Tool(Name) VALUES ('Shovel')
GO--创建了表Tool1与表Tool同结构
CREATE TABLE dbo.Tool1(
   ID INT IDENTITY NOT NULL PRIMARY KEY, 
   Name VARCHAR(40) NOT NULL
)
GO执行insert into Tool1 select * from Tool将表Tool的数据插入Tool1时报错消息 8101,级别 16,状态 1,第 1 行
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'Tool1'中的标识列指定显式值。设置SET IDENTITY_INSERT dbo.Tool1 On后故障依旧设置SET IDENTITY_INSERT dbo.Tool On后故障也依旧

解决方案 »

  1.   

    insert into Tool1 select Name from Tool
      

  2.   

    --1. 会话中某个表已将此属性设置为ON,当为另一个表发出了SET IDENTITY_INSERT ON 句时将出错
    --测试的表
    CREATE TABLE ta(id int IDENTITY(1,1),col int)
    CREATE TABLE tb(id int IDENTITY(1,1),col int)
    GO--设置 IDENTITY_INSERT 属性
    SET IDENTITY_INSERT ta ON
    SET IDENTITY_INSERT tb ON
    GO
    /*======================================================*/
    --2. 如果插入记录的标识值大于表的当前标识值,则SQL Server自动将新插入值作为当前标识值使用
    --测试的表
    CREATE TABLE tb(id int IDENTITY(1,1),col int)--强制在表中插入标识值
    SET IDENTITY_INSERT tb ON
    INSERT tb(id,col) VALUES(10,1)
    SET IDENTITY_INSERT tb OFFINSERT tb(col) VALUES(2)
    SELECT * FROM tb
    /*--结果
    id           col 
    ----------------- ----------- 
    10          1
    11          2
    --*/
    GO
    /*======================================================*/
    --3. 如果插入记录的标识值小于表的当前标识值,则表的当前标识值不受新插入值的影响
    --测试的表
    CREATE TABLE tb(id int IDENTITY(1,1),col int)
    INSERT tb VALUES(1)
    INSERT tb VALUES(2)--强制在表中插入标识值
    SET IDENTITY_INSERT tb ON
    INSERT tb(id,col) VALUES(1,11)
    SET IDENTITY_INSERT tb OFFINSERT tb(col) VALUES(3)
    SELECT * FROM tb
    /*--结果
    id           col 
    ----------------- ----------- 
    1           1
    2           2
    1           11
    3           3
    --*/
      

  3.   

    --创建了表Tool
    CREATE TABLE dbo.Tool(
       ID INT IDENTITY NOT NULL PRIMARY KEY, 
       Name VARCHAR(40) NOT NULL
    )
    GO--插入数据
    INSERT INTO dbo.Tool(Name) VALUES ('Screwdriver')
    INSERT INTO dbo.Tool(Name) VALUES ('Hammer')
    INSERT INTO dbo.Tool(Name) VALUES ('Saw')
    INSERT INTO dbo.Tool(Name) VALUES ('Shovel')
    GO--创建了表Tool1与表Tool同结构
    CREATE TABLE dbo.Tool1(
       ID INT IDENTITY NOT NULL PRIMARY KEY, 
       Name VARCHAR(40) NOT NULL
    )
    GOset identity_insert Tool1 on
    -->Tool1要显式指定列名:
    insert into Tool1(ID,Name) select * from Tool
    set identity_insert Tool1 off-->还不如直接这样:
    insert into Tool1 select Name from Tool
      

  4.   

    insert into tool1(name) 
      select name from tool
      

  5.   

    执行insert into Tool1 select * from Tool将表Tool的数据插入Tool1时报错 消息 8101,级别 16,状态 1,第 1 行 
    仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'Tool1'中的标识列指定显式值。 设置SET IDENTITY_INSERT dbo.Tool1 On后故障依旧 ---------------
    要加上表名的字段对应关系!SET IDENTITY_INSERT dbo.Tool1 On
    insert into Tool1(Id,name) select id,name from Tool
      

  6.   

    insert into Tool1(name) select Name from Tool
    指点列名就OK
      

  7.   

     insert into tool1(name) 
         select name 
           from tool
      就是指定用tool表中的NAME列字段來填充TOOL1表中的NAME字段.
      

  8.   

    --创建了表Tool 
    CREATE TABLE dbo.Tool( 
       ID INT IDENTITY NOT NULL PRIMARY KEY,  
       Name VARCHAR(40) NOT NULL 

    GO --插入数据 
    INSERT INTO dbo.Tool(Name) VALUES ('Screwdriver') 
    INSERT INTO dbo.Tool(Name) VALUES ('Hammer') 
    INSERT INTO dbo.Tool(Name) VALUES ('Saw') 
    INSERT INTO dbo.Tool(Name) VALUES ('Shovel') 
    GO --创建了表Tool1与表Tool同结构 
    CREATE TABLE dbo.Tool1( 
       ID INT IDENTITY NOT NULL PRIMARY KEY,  
       Name VARCHAR(40) NOT NULL 

    GO 
    insert Tool1([name])
    select [name] from Tool
      

  9.   

    sql 05 怎么有这种问题,真恶心 。 我想让他自己自动插入数据,还出现这个毛病 ,还有 插入错误的话 自动增长的Id 还要增加。