44 t-sql sql-server sql-server-2008
我想将一个表Equipment从一个数据库复制MyDBQA到我们的测试数据库MyDB.表中有一个标识列,它是主键(int,not null).
但是我收到了一个错误:
消息8101,级别16,状态1,行2
只有在使用列列表且IDENTITY_INSERT为ON时,才能指定表'MyDB.dbo.Equipment'中标识列的显式值.
我的剧本:
SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] ON
INSERT INTO [MyDB].[dbo].[Equipment] SELECT * FROM [MyDBQA].[dbo].[Equipment]
SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] OFF
Run Code Online (Sandbox Code Playgroud)
Mic*_*uda 94
消息说,您可能只是错过了列列表
SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] ON
INSERT INTO [MyDB].[dbo].[Equipment]
(COL1,
COL2)
SELECT COL1,
COL2
FROM [MyDBQA].[dbo].[Equipment]
SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] OFF
Run Code Online (Sandbox Code Playgroud)
Hei*_*nzi 14
错误消息的相关部分是
...when a column list is used...
Run Code Online (Sandbox Code Playgroud)
您正在使用的是列名列表SELECT *.改为使用列列表:
SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] ON
INSERT INTO [MyDB].[dbo].[Equipment] (Col1, Col2, ...)
SELECT Col1, Col2, ... FROM [MyDBQA].[dbo].[Equipment]
SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] OFF
Run Code Online (Sandbox Code Playgroud)