sys.dm_tran_current_transaction(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

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

참고 항목

Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 이를 호출하려면 이름 sys.dm_pdw_nodes_tran_current_transaction 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

구문

  
sys.dm_tran_current_transaction  

반환된 테이블

열 이름 데이터 형식 설명
transaction_id bigint 현재 스냅샷 트랜잭션 ID입니다.
transaction_sequence_num bigint 레코드 버전을 생성하는 트랜잭션의 시퀀스 번호입니다.
transaction_is_스냅샷 bit 스냅샷 격리 상태입니다. 스냅샷 격리 상태에서 트랜잭션이 시작되면 이 값은 1입니다. 그렇지 않으면 값이 0입니다.
first_스냅샷_sequence_num bigint 스냅샷 수행되었을 때 활성 상태였던 트랜잭션의 가장 낮은 트랜잭션 시퀀스 번호입니다. 실행 시 스냅샷 트랜잭션은 해당 시점에 모든 활성 트랜잭션의 스냅샷 사용합니다. 스냅샷 트랜잭션이 아닌 경우 이 열에 0이 표시됩니다.
last_transaction_sequence_num bigint 전역 시퀀스 번호입니다. 이 값은 시스템에서 생성한 마지막 트랜잭션 시퀀스 번호를 나타냅니다.
first_useful_sequence_num bigint 전역 시퀀스 번호입니다. 이 값은 버전 저장소에 보관해야 하는 행 버전이 있는 트랜잭션의 가장 오래된 트랜잭션 시퀀스 번호를 나타냅니다. 이전 트랜잭션에서 만든 행 버전을 제거할 수 있습니다.
pdw_node_id int 적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW)

이 배포가 있는 노드의 식별자입니다.

사용 권한

SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE 권한이 필요합니다.

SQL Database Basic, S0S1 서비스 목표 및 탄력적 풀의 데이터베이스에는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 서버 역할##MS_ServerStateReader##멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE 권한 또는 ##MS_ServerStateReader## 서버 역할의 멤버 자격이 필요합니다.

SQL Server 2022 이상에 대한 권한

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

예제

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

  • XSN-57은 직렬화 가능한 격리에서 업데이트 작업입니다.

  • XSN-58은 XSN-57과 동일합니다.

  • XSN-59는 스냅샷 격리에서의 선택 작업입니다.

  • 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.

참고 항목

동적 관리 뷰 및 함수(Transact-SQL)
트랜잭션 관련 동적 관리 뷰 및 함수(Transact-SQL)