【发布时间】:2015-10-27 05:14:36
【问题描述】:
我正在将我的应用程序从一个数据库迁移到另一个数据库,同时保持表结构不变。我在新表中创建相同的表并使用 db 链接插入值。 我收到错误消息,例如“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'XYZ' 中插入标识列的显式值”。因为表 XYZ 有 ScreenConfigSettingAccessId 作为标识列
下面是我用来创建表格和插入值的脚本
CREATE TABLE [dbo].[XYZ](
[ScreenConfigSettingAccessId] [int] IDENTITY(1,1) NOT NULL,
[APP_ID] [int] NOT NULL,
[ScreenConfigSettingId] [int] NOT NULL,
[RSRC_ID] [char](20) NOT NULL)
)
INSERT INTO [dbo].[XYX]
(
[ScreenConfigSettingAccessId] ,
[APP_ID] ,
[ScreenConfigSettingId] ,
[RSRC_ID]
)
SELECT
[ScreenConfigSettingAccessId] ,
[APP_ID] ,
[ScreenConfigSettingId] ,
[RSRC_ID]
FROM [olddatabase].[database name].[dbo].[XYX]
在旧表中,ScreenConfigSettingAccessId 的值为 3 和 4。
我想插入旧表的相同数据,因此将 IDENTITY_INSERT 设置为 ON 并尝试但仍然不允许插入。
寻找你的建议
【问题讨论】:
-
如果您在插入之前添加
SET IDENTITY_INSERT dbo.XYZ ON似乎应该可以工作。当您尝试使用IDENTITY_INSERT插入时,错误说明了什么? -
在 'SET IDENTITY_INSERT dbo.XYZ ON' 之后能够插入数据:-)
-
插入后我需要'SET IDENTITY_INSERT dbo.XYZ OFF'吗?
-
关闭后对我来说一切都很好。谢谢@ander2ed 的帮助
-
是的,没错。很高兴能提供帮助。
标签: sql-server data-migration identity-column