我正在使用一个数据集来插入从旧数据库转换而来的数据。要求是保持当前的Order_ID号码。
我已经尝试使用:
SET IDENTITY_INSERT orders ON;
在 SqlServer Management Studio 中,这段代码可以成功运行:
INSERT INTO orders (order_Id, ...) VALUES ( 1, ...);
然而,使用我在转换脚本中正在使用的数据集插入方式无法实现此操作。它看起来基本上是这样的:
dsOrders.Insert(oldorderId, ...);
我在过程中运行了 SQL(SET IDENTITY_INSERT orders ON)。我知道我一次只能针对一个表进行操作并且正在进行该操作。但我一直收到这个异常:在尝试向orders表插入值时出现异常 System.Data.SqlClient.SqlException:设置IDENTITY_INSERT为OFF时,无法向表'orders'中的标识列插入显式值。
有什么想法吗?
更新
AlexS 和 AlexKuznetsov 提到Set Identity_Insert是一个连接级别的设置,但是当我在SqlProfiler中查看SQL时,我注意到有几个命令。
第一条 - SET IDENTITY_INSERT DEAL ON 第二个-exec sp_reset_connection 第三到n -我的各种SQL命令,包括select和insert。
不过,每个命令之间总会有一个exec sp_reset_connection,我相信这是导致Identity_Insert设置丢失的原因。
有没有办法防止数据集执行连接重置?