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