Я использую набор данных для вставки преобразованных данных из старой базы данных. Требование состоит в том, чтобы поддерживать текущие номера Order_ID.Отключить IDENTITY_INSERT для вставки набора данных
Я попытался с помощью:
SET IDENTITY_INSERT orders ON;
Это работает, когда я нахожусь в SqlServer Management Studio, я могу успешно
INSERT INTO orders (order_Id, ...) VALUES (1, ...);
Однако, это не позволяет мне сделать это через вставку набора данных, которую я использую в своем сценарии конверсии. Что выглядит в основном так:
dsOrders.Insert(oldorderId, ...);
Я запускать (IDENTITY_INSERT заказы SET ON) SQL в процессе тоже. Я знаю, что я могу делать это только по одной таблице за раз, а я.
Я получаю это исключение:
Исключение при попытке вставить значение в таблицу заказов System.Data.SqlClient.SqlException: Невозможно вставить явное значение для столбца идентификаторов в таблице «Заказы», когда IDENTITY_INSERT установлен на OFF.
Любые идеи?
Update
AlexS & AlexKuznetsov упоминали, что Set IDENTITY_INSERT является настройка уровня соединения, однако, когда я смотрю на SQL в SqlProfiler, я заметил несколько команд.
- Первый -
SET IDENTITY_INSERT DEAL ON
- Второй -
exec sp_reset_connection
- третьего до п - мои различные SQL команды, включая выбор & вставки-х
Существует всегда exec sp_reset_connection
между командами, хотя, я считаю, что это отвечает за потерю стоимости в настройке Identity_Insert.
Есть ли способ остановить мой набор данных от выполнения сброса соединения?
Lol, у меня была такая же глупая ошибка – Jupaol