Sql server SQL标识插入问题

Sql server SQL标识插入问题,sql-server,Sql Server,你能帮忙吗 我正在运行以下查询: set identity_insert sites_dynamic ON insert into sites_dynamic select * from gpbatt_archive.dbo.sites_dynamic where site_serial_number = 49955 set identity_insert sites_dynamic OFF set identity_insert sites_static

你能帮忙吗

我正在运行以下查询:

set identity_insert sites_dynamic ON 

insert into sites_dynamic
    select * 
    from gpbatt_archive.dbo.sites_dynamic 
    where site_serial_number = 49955

set identity_insert sites_dynamic OFF 

set identity_insert sites_static ON 

insert into sites_static
    select * 
    from gpbatt_archive.dbo.sites_static 
    where static_site_id in (select static_site_id 
                             from gpbatt_archive.dbo.sites_dynamic 
                             where site_serial_number = 49955)

set identity_insert sites_static OFF 
返回的错误为:

Msg 8101,第16级,状态1,第3行
只有在使用列列表且“identity\u INSERT”处于启用状态时,才能为表“sites\u dynamic”中的标识列指定显式值


有人能帮我吗?我不熟悉这一点

在上使用
set identity\u insert时,您的insert语句必须包含列列表

以下是正确的方法:

set identity_insert targetTable on

insert into targetTable (col1, col2 [, coln])
select col1, col2 [, coln]
from sourceTable

set identity_insert targetTable off

正如Nick.McDermaid所评论的那样-最好的做法是始终包含列列表。

当使用
set identity\u insert on
时,您的insert语句必须包含列列表

以下是正确的方法:

set identity_insert targetTable on

insert into targetTable (col1, col2 [, coln])
select col1, col2 [, coln]
from sourceTable

set identity_insert targetTable off

正如Nick.McDermaid所评论的那样——最好始终包含列列表。

可能重复的可能重复的可能重复的可能我添加的内容:不管怎样,您都应该始终包含列列表@尼克·麦克德迈德:你完全正确。把它编辑到我的答案中。我想补充一点:不管怎样,你都应该包括列和列表@尼克·麦克德迈德:你完全正确。把它编辑成我的答案。