다음을 통해 공유


sys.dm_tran_current_snapshot(Transact-SQL)

현재 스냅숏 트랜잭션이 시작될 때의 모든 활성 트랜잭션을 표시하는 가상 테이블을 반환합니다. 현재 트랜잭션이 스냅숏 트랜잭션이 아니면 이 함수는 행을 반환하지 않습니다. sys.dm_tran_current_snapshot이 현재 스냅숏에 대한 활성 트랜잭션만 반환한다는 점을 제외하고 sys.dm_tran_current_snapshotsys.dm_tran_transactions_snapshot과 비슷합니다.

구문

sys.dm_tran_current_snapshot

반환된 테이블

열 이름

데이터 형식

설명

transaction_sequence_num

bigint

활성 트랜잭션의 트랜잭션 시퀀스 번호입니다.

사용 권한

서버에 대한 VIEW SERVER STATE 권한이 필요합니다.

다음 예에서는 ALLOW_SNAPSHOT_ISOLATION 및 READ_COMMITTED_SNAPSHOT 옵션이 ON으로 설정된 데이터베이스에서 각각 XSN(트랜잭션 시퀀스 번호)으로 식별되는 4개의 동시 트랜잭션이 실행되는 테스트 시나리오를 사용합니다. 다음 트랜잭션이 실행되고 있습니다.

  • XSN-57은 직렬화 격리에서 실행되는 UPDATE 작업입니다.

  • XSN-58은 XSN-57과 같습니다.

  • XSN-59는 스냅숏 격리에서 실행되는 SELECT 작업입니다.

  • XSN-60은 XSN-59와 같습니다.

다음 쿼리는 XSN-59 범위 내에서 실행됩니다.

SELECT 
    transaction_sequence_num
  FROM sys.dm_tran_current_snapshot;

결과 집합은 다음과 같습니다.

transaction_sequence_num
------------------------
57
58

결과는 스냅숏 트랜잭션 XSN-59가 시작될 때 XSN-57과 XSN-58이 활성 상태였음을 보여 줍니다. XSN-57과 XSN-58이 커밋되거나 롤백된 후에도 스냅숏 트랜잭션이 완료될 때까지 동일한 결과가 지속됩니다.

XSN-60 범위 내에서 동일한 쿼리를 실행합니다.

결과 집합은 다음과 같습니다.

transaction_sequence_num
------------------------
57
58
59

XSN-60의 출력에는 XSN-59에 대해 표시되는 것과 같은 트랜잭션은 물론 XSN-60이 시작될 때 활성 상태였던 XSN-59도 포함됩니다.