2010-12-10 133 views
2

在MS SQL Server中,如果我在存儲過程中使用「SET TRANSACTION ISOLATION LEVEL」,是否需要將select語句包裝在BEGIN/END TRANSACTION塊中?以下是否會按預期工作?「設置交易級別」是否需要開始交易?

CREATE PROCEDURE my_sproc AS 
BEGIN 

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

    SELECT * FROM MyTable 

END 
+0

請在您的文字中解釋「預期」是什麼? – Oded 2010-12-10 15:18:07

+0

我期望select語句的行爲就像我使用過(NOLOCK)提示一樣。 (如果我的程序真的很簡單,我會這麼做) – 2010-12-10 15:35:15

回答

3

TRANSACTION ISOLATION LEVEL設置是連接級別設置。無需將其包裝在交易中。

這就是說,你明白你會有這樣的設置髒讀和等?

您可以通過使用鎖提示,如完成的查詢,通過查詢依據同樣的事情:

SELECT * FROM MyTable WITH (NOLOCK)

1

SET事務隔離級別不同的開始/ COMMIT/ROLLBACK

  • 第一個更改隔離與併發設置
  • 第二個定義原子「工作單元」

沒有直接的聯繫或互動:不同的概念