Отключение IDENTITY_INSERT из ASP.Net - PullRequest
0 голосов
/ 10 февраля 2012

Я пишу веб-импортер для импорта данных из одной базы данных в другую.Поскольку данные загружаются в таблицу с идентификатором, мне нужно включить Identity_Inserts до выполнения моего оператора вставки.Я генерирую SQL-операторы, которые мне нужно было бы запустить в List, и я хотел бы установить для IDENTITY_INSERT значение ON перед циклическим выполнением команд, а затем отключить его после завершения.Я собираюсь выполнять каждую команду по одной, потому что я хочу отслеживать, какие команды не сработали.

Я попытался выполнить SET IDENTITY_INSERT [TABLE NAME] ON перед началом цикла, но это не работает.

Как мне добиться того, что я пытаюсь сделать, или у кого-нибудь есть другие идеи?

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Взято из https://connect.microsoft.com/SQLServer/feedback/details/517923/set-identity-insert-already-on-error-message-always-returns-dbo-schema-name

Состояния SQL 2k8 BOL "В любое время только одна таблица в сеансе может иметь для свойства IDENTITY_INSERT значение ON. Если для таблицы это свойство уже установлено в ON, идля другой таблицы выдан оператор SET IDENTITY_INSERT ON, SQL Server возвращает сообщение об ошибке, в котором говорится, что SET IDENTITY_INSERT уже включен, и сообщает, для какой таблицы он включен. "

Так что, думаю, вам нужновыключить его в конце цикла?

0 голосов
/ 10 февраля 2012

Для выполнения опции SET IDENTITY_INSERT требуются повышенные разрешения, проверьте, соответствует ли ваш пользователь одному из них:
Пользователь должен владеть объектом или быть членом фиксированной серверной роли sysadmin или db_ownerи db_ddladmin фиксированные роли базы данных.

...