2010-07-30 60 views
0

有了下面的代碼,我已經IDENTITY_INSERT開啓以能夠插入明確一些值:IDENTITY_INSERT已打開,但有錯誤,但

SET IDENTITY_INSERT dbo.myTable ON 
Go 

身份插件設置爲主鍵,而不是空

在我的C#程序

,當我要插入值,生成此錯誤:

IDENTITY_INSERT is turned off

,但我已經把它Ø n

有什麼問題以及如何解決?

謝謝

+0

你在C#程序中打開它嗎?我不認爲這是一個全球性的設置 - 它是每個會話。您需要從C#代碼中將其打開,然後執行插入,然後將其關閉。 – PatrickSteele 2010-07-30 13:39:34

+0

我非常關心你在C#中使用set identity_insert。這不是應該通過用戶界面定期完成的事情。這是非常危險的做法這樣做是錯誤的是對數據完整性的威脅,這些任務只應由dbas而不是應用程序使用。通常這隻在極少數情況下插入遺留數據。如果您正在規劃您的設計要定期使用它,則需要檢查是否沒有更好的解決方案。 – HLGEM 2010-07-30 16:56:25

回答

2

IDENTITY_INSERT設置只適用於當前的SQL會話,例如您無法在SQL Server Management Studio中的給定表上打開它,然後運行您的C#代碼並期望它可以正常工作。

你需要做的是將SET IDENTITY_INSERT dbo.myTable ON語句作爲C#應用程序的一部分 - 首先,將命令中的設置設置爲ON,然後根據需要從C#應用程序中執行任何操作,最後轉到再次從您的C#代碼中關閉該設置。

相關問題