2010-12-10 3 views
2

MS SQL Server에서 저장 프로 시저에 "SET TRANSACTION ISOLATION LEVEL"을 사용하면 BEGIN/END TRANSACTION 블록에 select 문을 래핑해야합니까? 다음과 같이 예상대로 작동합니까?"트랜잭션 레벨 설정"에 트랜잭션 시작이 필요합니까?

CREATE PROCEDURE my_sproc AS 
BEGIN 

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

    SELECT * FROM MyTable 

END 
+0

"예상대로"무엇인지 설명하십시오. – Oded

+0

select 문이 (NOLOCK) 힌트를 사용하는 것처럼 동작 할 것으로 기대합니다. (내 절차가 정말 간단하다면 어떻게 할 것인가) –

답변

3

TRANSACTION ISOLATION LEVEL 설정 연결 수준 설정된다. 트랜잭션으로 래핑 할 필요가 없습니다.

그렇다면이 설정에서 읽음이 더러울 것입니다.

당신은 같은 잠금 힌트를 사용하여 쿼리별로 쿼리 기준으로 같은 일을 수행 할 수 있습니다 트랜잭션 격리 수준이 시작하는 다른

SELECT * FROM MyTable WITH (NOLOCK)

1

SET를// ROLLBACK

    에게 COMMIT
  • 첫 번째는 격리와 동시성 설정을 변경합니다.
  • 둘째는 원자 단위 "작업 단위"를 정의합니다.

직접 연결 또는 상호 작용이 없습니다. 다른 개념