sql-serversql-server-2008t-sql

Set IDENTITY_INSERT ON is not working


I want to copy a table Equipment from one database MyDBQA to our test database MyDB. There is an identity column in the table which is the primary key (int, not null).

But I got an error:

Msg 8101, Level 16, State 1, Line 2
An explicit value for the identity column in table 'MyDB.dbo.Equipment' can only be specified when a column list is used and IDENTITY_INSERT is ON.

My script:

SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] ON
INSERT INTO [MyDB].[dbo].[Equipment]  SELECT * FROM [MyDBQA].[dbo].[Equipment]
SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] OFF

Solution

  • You might be just missing the column list, as the message says

    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