다음을 통해 공유


sys.dm_tran_current_transaction(Transact-SQL)

현재 세션에 있는 트랜잭션의 상태 정보를 표시하는 단일 행을 반환합니다.

구문

sys.dm_tran_current_transaction

반환된 테이블

열 이름

데이터 형식

설명

transaction_id

bigint

현재 스냅숏의 트랜잭션 ID입니다.

transaction_sequence_num

bigint

레코드 버전을 생성하는 트랜잭션 시퀀스 번호입니다.

transaction_is_snapshot

bit

스냅숏 격리 상태입니다. 트랜잭션이 스냅숏 격리 상태에서 시작된 경우 이 값은 1입니다. 그렇지 않으면 값이 0입니다.

first_snapshot_sequence_num

bigint

스냅숏을 만들 때 활성 상태인 트랜잭션의 가장 낮은 트랜잭션 시퀀스 번호입니다. 실행 시 스냅숏 트랜잭션이 해당 시점에서 활성 상태인 모든 트랜잭션의 스냅숏을 만듭니다. 스냅숏 트랜잭션이 아닌 경우 이 열에 0이 표시됩니다.

last_transaction_sequence_num

bigint

전역 시퀀스 번호입니다. 이 값은 시스템에서 생성된 마지막 트랜잭션 시퀀스 번호를 나타냅니다.

first_useful_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와 같습니다.

다음 쿼리는 각 트랜잭션 범위 내에서 실행됩니다.

SELECT 
    transaction_id
    transaction_sequence_num
    transaction_is_snapshot
    first_snapshot_sequence_num
    last_transaction_sequence_num
    first_useful_sequence_num
  FROM sys.dm_tran_current_transaction;

XSN-59의 결과는 다음과 같습니다.

transaction_id       transaction_sequence_num transaction_is_snapshot
-------------------- ------------------------ -----------------------
9387                 59                       1                       

first_snapshot_sequence_num last_transaction_sequence_num
--------------------------- -----------------------------
57                               61                      

first_useful_sequence_num
-------------------------
57

출력은 XSN-59가 XSN-59 시작 시 활성 상태였던 XSN-57을 첫 번째 트랜잭션으로 사용하는 스냅숏 트랜잭션임을 보여 줍니다. 즉, XSN-59는 XSN-57보다 낮은 트랜잭션 시퀀스 번호를 가진 트랜잭션이 커밋한 데이터를 읽습니다.

XSN-57의 결과는 다음과 같습니다.

transaction_id       transaction_sequence_num transaction_is_snapshot
-------------------- ------------------------ -----------------------
9295                 57                       0

first_snapshot_sequence_num last_transaction_sequence_num
--------------------------- -----------------------------
NULL                        61

first_useful_sequence_num
-------------------------
57

XSN-57은 스냅숏 트랜잭션이 아니므로 first_snapshot_sequence_num은 NULL입니다.