Я использую набор данных для вставки данных, которые преобразуются из старой базы данных. Требование состоит в том, чтобы поддерживать текущие номера Order_ID.
Я пробовал использовать:
SET IDENTITY_INSERT orders ON;
Это работает, когда я в SqlServer Management Studio, я могу успешно
INSERT INTO orders (order_Id, ...) VALUES ( 1, ...);
Однако это не позволяет мне делать это через вставку набора данных, которую я использую в своем преобразовании script. Что выглядит в основном так:
dsOrders.Insert(oldorderId, ...);
Я также запустил SQL (SET IDENTITY_INSERT orders ON) во время процесса. Я знаю, что я могу делать это только по одной таблице за раз, и я.
Я получаю это исключение:
Исключение при попытке вставить значение в таблицу заказов System.Data.SqlClient.SqlException: не удается вставить явное значение для столбца идентификации в табличных "порядках", если для параметра IDENTITY_INSERT установлено значение "ВЫКЛ".
Любые идеи?
Обновить
AlexS и AlexKuznetsov упоминали, что Set Identity_Insert - это уровень уровня соединения, однако, когда я смотрю на SQL в SqlProfiler, я замечаю несколько команд.
- Сначала -
SET IDENTITY_INSERT DEAL ON
- Второй -
exec sp_reset_connection
- Третий - n - мои различные команды sql, включая select и insert
Между командами всегда есть exec sp_reset_connection
, но я считаю, что это отвечает за потерю значения в настройке Identity_Insert.
Есть ли способ остановить мой набор данных от соединения reset?