2012-10-23 58 views
0

我正在創建一個存儲過程,我不想通過腳本進行任何鎖定。我確定我需要在腳本的開始部分寫明「SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED」。但我不知道如何開始後的聲明。微軟的一個例子表明,從「BEGIN TRANSACTION」開始並以「END TRANSACTION」結束。在「SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED」後面有一個沒有BEGIN和END語句的人開始。請建議我使用「SET TRANSACTION ISOLATION LEVEL」聲明的正確方法來實現我的目標。SET TRANSACTION ISOLATION LEVEL存儲過程的範圍

http://msdn.microsoft.com/en-us/library/aa259216(v=sql.80).aspx

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
GO 
BEGIN TRANSACTION 
SELECT * FROM publishers 
SELECT * FROM authors 
... 
COMMIT TRANSACTION 

SQL Server: how to set default isolation level for the entire stored procedure?

BEGIN 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED 
-- will a transaction level for a atomic transaction created by SQL Server for this statement be READ COMMITTED 
SELECT * FROM T 
END 
+0

的第二代碼片段是存儲Procs.It使用必須對SQL語句的開頭寫方式。 –

回答

0

兩個語句都ok

Transaction scope in a stored procedure, from MSDN

如果發出SET TRANSACTION ISOLATION大號伊維爾基尼在存儲過程中或 觸發器,當對象返回控制的隔離級別是重置 到電平實際上被調用的對象時。例如,如果 在批處理中設置了REPEATABLE READ,並且批處理然後調用將隔離級別設置爲SERIALIZABLE的存儲過程,則當存儲過程 將控制權返回給批處理時,隔離級別 級別設置將恢復爲REPEATABLE READ。

相關問題