2017-02-20 34 views
-1

我有需要使用更新表每天一次作業: -MSSQL 2008 SET IDENTITY INSERT活數據庫

SET IDENTITY INSERT ON

。然而,在同一時間,其他用戶正在使用這個實時數據庫並插入記錄,這必須使用SET IDENTITY INSERT OFF完成。

有什麼方法可以讓作業在運行的同時仍然允許用戶插入記錄?

+0

難道不是這樣嗎?當用戶要求關閉時,jub是否需要「設置標識插入」? –

+0

你是對的。該工作要求身份插入ON,而正在進行的事務需要身份插入OFF。 – user1480192

+0

「工作需要身份插入ON,而正在進行的事務需要身份插入關閉」 - 這有點奇怪 –

回答

0

這沒有問題。

設置標識插入的範圍session

所以如果你使用了下面的代碼:

SET IDENTITY_INSERT TableName ON 
Insert statement ... 

其他用戶意味着其他場次,所以如果他們試圖插入的身份,他們將獲得下一錯誤: -

Cannot insert explicit value for identity column in table 'TableName' when IDENTITY_INSERT is set to OFF.

MSDN: -

At any time, only one table in a session can have the IDENTITY_INSERT property set to ON. If a table already has this property set to ON, and a SET IDENTITY_INSERT ON statement is issued for another table, SQL Server returns an error message that states SET IDENTITY_INSERT is already ON and reports the table it is set ON for.

+0

因此,有些用戶可以使用Identity_Insert ON訪問表,同時其他人可以使用identity_insert_off訪問同一個表? – user1480192

+0

是的,正如MSDN告訴我們的,它的範圍是會話。 –

+0

請在你的情況下使用序列。 –