2016-02-23 22 views
2

我試圖從文本文件,使用VBA重建數據庫。要插入的ID值,我在INSERT語句發送之前調用此:混淆IDENTITY_INSERT錯誤,說它已經在另一個表

SET IDENTITY_INSERT TableName ON 

這似乎對於大多數表名工作得很好,但是當我把它在表「賬戶」我得到一個有趣的錯誤:

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

我猜這與fkey約束或類似,但有沒有人知道肯定?

+1

錯誤消息非常明顯:您打開了「PropertyAssets」的標識插入,但從未將其關閉。 –

+0

[「任何時候,會話中只有一個表可以將IDENTITY_INSERT屬性設置爲ON」](http://stackoverflow.com/q/23832598/11683) – GSerg

+0

Ahh。那麼從錯誤信息本身來看,這絕對不是很清楚,但我明白了。第二,這變得越來越難。 –

回答

8

在會話中,您一次只能在一張桌子上設置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 
1

你只需要另一個會話。我只是重新連接到相同的數據庫,它運行沒有任何問題。 當然,我改變了腳本,最終將IDENTITY_INSERT設置爲OFF。