Nat*_*oop 27 sql-server dataset uniqueidentifier
我正在使用数据集插入从旧数据库转换的数据.要求是维护当前的Order_ID号码.
我尝试过使用:
SET IDENTITY_INSERT orders ON;
Run Code Online (Sandbox Code Playgroud)
这在我在SqlServer Management Studio中时有效,我能够成功
INSERT INTO orders (order_Id, ...) VALUES ( 1, ...);
Run Code Online (Sandbox Code Playgroud)
但是,它不允许我通过我在转换脚本中使用的数据集插入来执行此操作.看起来基本上是这样的:
dsOrders.Insert(oldorderId, ...);
Run Code Online (Sandbox Code Playgroud)
我也在这个过程中运行SQL(SET IDENTITY_INSERT命令为ON).我知道我一次只能对着一张桌子这样做而且我是.
我一直得到这个例外:
尝试向订单表中插入值时出现异常System.Data.SqlClient.SqlException:当IDENTITY_INSERT设置为OFF时,无法在表'orders'中为identity列插入显式值.
有任何想法吗?
更新
AlexS和AlexKuznetsov已经提到Set Identity_Insert是一个连接级别设置,但是,当我在SqlProfiler中查看SQL时,我注意到了几个命令.
SET IDENTITY_INSERT DEAL ONexec sp_reset_connectionexec sp_reset_connection但是命令之间总是存在,我相信这是Identity_Insert设置中的值丢失的原因.
有没有办法阻止我的数据集进行连接重置?
mar*_*c_s 53
你有混淆的选择:
SET IDENTITY_INSERT orders ON
Run Code Online (Sandbox Code Playgroud)
会变成ON插入特定值(您指定)入表中的IDENTITY列的能力.
SET IDENTITY_INSERT orders OFF
Run Code Online (Sandbox Code Playgroud)
再次关闭该行为并恢复正常行为(您无法指定IDENTITY列的值,因为它们是自动生成的)将恢复.
渣
| 归档时间: |
|
| 查看次数: |
52922 次 |
| 最近记录: |