【发布时间】:2010-11-17 02:43:06
【问题描述】:
我正在使用数据集插入从旧数据库转换的数据。要求是保持当前的 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 设置值丢失的原因。
有没有办法阻止我的数据集进行连接重置?
【问题讨论】:
标签: sql-server dataset uniqueidentifier