我正在使用数据集插入从旧数据库转换的数据。要求是维护当前的 Order_ID 编号。
我试过使用:
SET IDENTITY_INSERT orders ON;
当我在 SqlServer Management Studio 中时,这有效,我能够成功
INSERT INTO orders (order_Id, ...) VALUES ( 1, ...);
但是,它不允许我通过我在转换脚本中使用的数据集插入来执行此操作。看起来基本上是这样的:
dsOrders.Insert(oldorderId, ...);
在此过程中,我也运行了 SQL(SET IDENTITY_INSERT 命令打开)。我知道我一次只能对一张牌桌这样做,而且我是。
我不断收到此异常:
尝试将值插入订单表 System.Data.SqlClient.SqlException 时出现异常:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“订单”中插入标识列的显式值。
有任何想法吗?
更新
AlexS 和 AlexKuznetsov 提到 Set Identity_Insert 是一个连接级别设置,但是,当我查看 SqlProfiler 中的 SQL 时,我注意到几个命令。
- 第一的 -
SET IDENTITY_INSERT DEAL ON
- 第二 -
exec sp_reset_connection
- 第三到 n - 我的各种 sql 命令,包括选择和插入
但是,命令之间总是存在一个exec sp_reset_connection
,我相信这是导致 Identity_Insert 设置值丢失的原因。
有没有办法阻止我的数据集进行连接重置?