【问题标题】:Confusing IDENTITY_INSERT error, says it is already on in another table令人困惑的 IDENTITY_INSERT 错误,表示它已经在另一个表中
【发布时间】:2016-06-05 23:27:57
【问题描述】:

我正在尝试使用 VBA 从文本文件重建数据库。要插入 ID 值,我在发送 INSERT 之前调用它:

SET IDENTITY_INSERT TableName ON

这似乎适用于大多数 TableNames,但是当我在表“Accounts”上调用它时,我收到了一个有趣的错误:

"IDENTITY_INSERT is already ON for table 'test.dbo.PropertyAssets'. Cannot perform SET operation for table 'Accounts'."

我猜这与 fkey 约束等有关,但有人确定吗?

【问题讨论】:

标签: sql-server vba


【解决方案1】:

您在会话中一次只能为一张桌子设置IDENTITY_INSERT。如果要在多个表上使用,需要将ONOFF设置成一致,见下面的模板:

SET IDENTITY_INSERT TableName ON

--insert values with IDs

SET IDENTITY_INSERT TableName OFF 

SET IDENTITY_INSERT PropertyAssets ON

--insert value with IDs

SET IDENTITY_INSERT PropertyAssets OFF

【讨论】:

    【解决方案2】:

    你只需要另一个会话。我只是重新连接到同一个数据库,它运行没有任何问题。 当然,我最后还是修改了脚本,将 IDENTITY_INSERT 设置为 OFF。

    【讨论】:

    • 我重新连接了其他用户会话,它运行没有任何问题
    猜你喜欢
    • 2018-08-09
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多