令人困惑的IDENTITY_INSERT错误,表示它已在另一个表中

Mau*_*itz 8 sql-server vba

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

SET IDENTITY_INSERT TableName ON
Run Code Online (Sandbox Code Playgroud)

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

"IDENTITY_INSERT is already ON for table 'test.dbo.PropertyAssets'. Cannot perform SET operation for table 'Accounts'."
Run Code Online (Sandbox Code Playgroud)

我猜这与fkey约束等有关,但有人知道吗?

Ale*_*lex 13

您只能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
Run Code Online (Sandbox Code Playgroud)


小智 5

您只需要另一次会议。我只是重新连接到同一个数据库,它运行时没有任何问题。当然,我最终更改了脚本以将 IDENTITY_INSERT 设置为 OFF。