Как включить и выключить Identity INSERT с помощью SQL Server 2008?

почему я получаю ошибку, делая вставку, когда IDENTITY_INSERT установлен в OFF?

Как правильно включить его в SQL Server 2008? Это с помощью SQL Server Management Studio?

я запустил этот запрос:

SET IDENTITY_INSERT Database. dbo. Baskets ON

затем я получил сообщение обратно в консоль, что команда(Ы) успешно завершена. Однако, когда я запускаю приложение, оно по-прежнему дает мне ошибку, как показано ниже:

Cannot insert explicit value for identity column in table 'Baskets' when 
IDENTITY_INSERT is set to OFF.

7 ответов


через SQL согласно MSDN

SET IDENTITY_INSERT sometableWithIdentity ON

INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...)
VALUES (AnIdentityValue, col2value, col3value, ...)

SET IDENTITY_INSERT sometableWithIdentity OFF

полное сообщение об ошибке говорит вам ровно что это неправильно...

не удается вставить явное значение столбца identity в таблицу "sometableWithIdentity", когда IDENTITY_INSERT имеет значение OFF.


У меня была проблема, когда она не позволила мне вставить ее даже после установки IDENTITY_INSERT.

проблема заключалась в том, что я не указывал имена столбцов и по какой-то причине ему это не понравилось.

INSERT INTO tbl Values(vals)

поэтому в основном сделайте полную вставку в значения tbl(cols) (vals)


импорт: Вы должны писать столбцы в INSERT сообщении

INSERT INTO TABLE
SELECT * FROM    

- Это не правильно.

Insert into Table(Field1,...)
Select (Field1,...) from TABLE

правильно


Я знаю, что это старый нить, но я просто наткнулся на это. Если пользователь пытается запустить вставки в столбце Identity после некоторого другого сеанса IDENTITY_INSERT ON, он обязательно получит вышеуказанную ошибку.

установка значения Identity Insert и последующие команды Insert DML должны выполняться одним и тем же сеансом.

здесь @Beginner устанавливал Identity Insert отдельно, а затем запускал вставки из своего приложения. Вот почему он получил ниже ошибка:

Cannot insert explicit value for identity column in table 'Baskets' when 
IDENTITY_INSERT is set to OFF.

Это вероятно, когда у вас есть поле первичного ключа, и вы вставляете значение, которое дублируется, или у вас установлен флаг INSERT_IDENTITY в on


выглядит nevessary поставить базу данных установить параметр identity_insert. dbo. Корзины; перед каждой SQL INSERT отправки пакета. /Вы можете отправить несколько вставок ... ЦЕННОСТИ.. команды начинались с одного набора IDENTITY_INSERT ... На строку в начале. Просто не ставьте разделитель партии между/ Я не знаю, почему набор IDENTITY_INSERT ... На перестает работать, после отправки блока (например.: .ExecuteNonQuery () в C#)... Мне пришлось поставить SET IDENTITY_INSERT ... ON; снова в начале следующего SQL командная строка.


вам нужно добавить команду " go " после установки Identity insert. Пример:

SET IDENTITY_INSERT sometableWithIdentity ON
go

INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...)
VALUES (AnIdentityValue, col2value, col3value, ...)

SET IDENTITY_INSERT sometableWithIdentity OFF
go