一尘不染

插入时出现SQL Server 2008的``泪DENTITY_INSERT为ON''错误

sql

Locale_Code在两个不同的数据库中有表,CP并且PP

这是我表的插入脚本

CREATE TABLE [dbo].[LOCALE_CODE](
    [id] [bigint] IDENTITY(1,1) NOT NULL,
[active] [bit] NOT NULL,
[code] [nvarchar](4000) NULL,
[created_at] [datetime] NULL,
[created_by] [nvarchar](4000) NULL,
[display_name] [nvarchar](4000) NULL,
[updated_at] [datetime] NULL,
[updated_by] [nvarchar](4000) NULL,
[read_permission] [nvarchar](4000) NULL,
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,      ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

我正在尝试将PP.dbo.LOCALE_CODE的所有行插入到CP.dbo.LOCALE_CODE,如下所示

SET IDENTITY_INSERT CP.dbo.LOCALE_CODE ON

insert into CP.[dbo].[LOCALE_CODE] select * from PP.dbo.LOCALE_CODE

但是正在低于错误

仅当使用列列表并且IDENTITY_INSERT为ON时,才能为表’CP.dbo.LOCALE_CODE’中的identity列指定一个显式值。

我什至尝试了如下的批量插入

BULK INSERT CP.[dbo].[LOCALE_CODE] from 'C:\locales.csv'
with (fieldterminator = ',', rowterminator = '\n' )
go

但是正在低于错误

当IDENTITY_INSERT设置为ON或将复制用户插入到NOT FOR
REPLICATION标识列中时,必须为表’LOCALE_CODE’中的标识列指定显式值。

有人可以帮忙修复枯萎的插入内容,或直接从PP.Locale_Code插入到PP.Locale_Code吗?


阅读 142

收藏
2021-05-23

共1个答案

一尘不染

插入时,您需要在目标表中明确提及列名。用CP.[dbo].[LOCALE_CODE]表的列列表替换Col1,Col2等

SET IDENTITY_INSERT CP.dbo.LOCALE_CODE ON

insert into CP.[dbo].[LOCALE_CODE] (Col1 ,Col2 , Col3) 
select * from PP.dbo.LOCALE_CODE

您可以在源表的SELECT中使用* PP.dbo.LOCALE_CODE

2021-05-23