Как включить и выключить 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