gpt4 book ai didi

sql-server - 关闭数据集插入的 IDENTITY_INSERT

转载 作者:行者123 更新时间:2023-12-01 21:16:25 28 4
gpt4 key购买 nike

我正在使用数据集插入从旧数据库转换而来的数据。要求是维护当前的 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)。我知道我一次只能对一张 table 执行此操作,而且我确实如此。

我不断收到此异常:

Exception when attempting to insert a value into the orders table System.Data.SqlClient.SqlException: Cannot insert explicit value for identity column in table 'orders' when IDENTITY_INSERT is set to OFF.

有什么想法吗?

更新

AlexS 和 AlexKuznetsov 提到 Set Identity_Insert 是一个连接级别设置,但是,当我查看 SqlProfiler 中的 SQL 时,我注意到几个命令。

  • 首先 - SET IDENTITY_INSERT DEAL ON
  • 第二 - 执行 sp_reset_connection
  • 第三到n - 我的各种sql命令,包括选择和插入

尽管命令之间始终存在 exec sp_reset_connection,但我相信这是导致 Identity_Insert 设置值丢失的原因。

有没有办法阻止我的数据集进行连接重置?

最佳答案

您的选项混淆了:

SET IDENTITY_INSERT orders ON

开启将特定值(您指定的)插入到具有 IDENTITY 列的表中的功能。

SET IDENTITY_INSERT orders OFF

再次关闭该行为并恢复正常行为(您无法为 IDENTITY 列指定值,因为它们是自动生成的)。

马克

关于sql-server - 关闭数据集插入的 IDENTITY_INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1234780/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com