Как включить и отключить 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.
269
15 авг. '11 в 12:37
источник поделиться
8 ответов

Через SQL по MSDN

SET IDENTITY_INSERT sometableWithIdentity ON

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

SET IDENTITY_INSERT sometableWithIdentity OFF

Полное сообщение об ошибке сообщает вам, что именно...

Невозможно вставить явное значение для столбца идентификатора в таблице "sometableWithIdentity", если для параметра IDENTITY_INSERT установлено значение OFF.

476
15 авг. '11 в 12:39
источник

Связанные вопросы


Похожие вопросы

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

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

INSERT INTO tbl Values(vals)

Итак, в основном сделайте полные значения INSERT INTO tbl (cols) (vals)

40
08 февр. '13 в 17:39
источник

Импорт Вы должны писать столбцы в инструкции INSERT

INSERT INTO TABLE
SELECT * FROM    

Неправильно.

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

Правильно

22
22 апр. '15 в 12:09
источник

Решение:

  • Установите IDENTITY_INSERT в положение ON.

  • Вставьте данные клиентов в таблицу Customer.

  • Установите IDENTITY_INSERT в положение OFF.

Прочитать полную статью здесь.

6
03 сент. '13 в 12:39
источник

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

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

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

Cannot insert explicit value for identity column in table 'Baskets' when 
IDENTITY_INSERT is set to OFF.
0
22 апр. '17 в 10:35
источник

Вероятно, если у вас есть поле PRIMARY KEY, и вы вставляете значение, которое дублируется, или вы имеете флаг INSERT_IDENTITY, установленный на

0
20 нояб. '13 в 17:46
источник

Похоже, что не нужно класть базу данных SET IDENTITY_INSERT. ПСЭ. Корзины ON; перед каждой отправкой пакета SQL INSERT./Вы можете отправить несколько команд INSERT... VALUES.., начатых с одного SET IDENTITY_INSERT... ON; строка в начале. Просто не помещайте разделитель партии между/ Я не знаю, почему SET IDENTITY_INSERT... ON перестает работать после блока отправки (например:.ExecuteNonQuery() в С#)... Мне пришлось установить SET IDENTITY_INSERT... ON; снова в начале следующей строки команды SQL.

-1
08 марта '17 в 23:08
источник

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

SET IDENTITY_INSERT sometableWithIdentity ON
go

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

SET IDENTITY_INSERT sometableWithIdentity OFF
go
-5
03 апр. '15 в 1:45
источник

Посмотрите другие вопросы по меткам или Задайте вопрос