다음을 통해 공유


sys.dm_tran_transactions_snapshot(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

각 스냅샷 트랜잭션이 시작될 때 활성 상태인 트랜잭션의 sequence_number 대한 가상 테이블을 반환합니다. 이 보기에서 반환되는 정보는 다음을 수행하는 데 도움이 될 수 있습니다.

  • 현재 활성 스냅샷 트랜잭션 수를 찾습니다.

  • 특정 스냅샷 트랜잭션에서 무시하는 데이터 수정 내용을 식별합니다. 스냅샷 트랜잭션이 시작될 때 활성 상태인 트랜잭션의 경우 해당 트랜잭션이 커밋된 후에도 해당 트랜잭션의 모든 데이터 수정은 스냅샷 트랜잭션에서 무시됩니다.

예를 들어 sys.dm_tran_transactions_snapshot 다음 출력을 고려합니다.

transaction_sequence_num snapshot_id snapshot_sequence_num  
------------------------ ----------- ---------------------  
59                       0           57  
59                       0           58  
60                       0           57  
60                       0           58  
60                       0           59  
60                       3           57  
60                       3           58  
60                       3           59  
60                       3           60  

이 열은 transaction_sequence_num 현재 스냅샷 트랜잭션의 XSN(트랜잭션 시퀀스) 번호를 식별합니다. 이 출력은 5960의 두 번호를 표시합니다. snapshot_sequence_num 열은 각 스냅샷 트랜잭션이 시작될 때 활성 상태인 트랜잭션의 트랜잭션 시퀀스 번호를 식별합니다.

출력은 두 개의 활성 트랜잭션인 XSN-57 및 XSN-58이 실행되는 동안 스냅샷 트랜잭션 XSN-59가 시작되었음을 보여 줍니다. XSN-57 또는 XSN-58에서 데이터를 수정하는 경우 XSN-59는 변경 내용을 무시하고 행 버전 관리를 사용하여 데이터베이스의 트랜잭션 일치 보기를 유지 관리합니다.

스냅샷 트랜잭션 XSN-60은 XSN-57 및 XSN-58 및 XSN 59에서 수정한 데이터를 무시합니다.

반환된 테이블

열 이름 데이터 형식 설명
transaction_sequence_num bigint 스냅샷 트랜잭션의 XSN(트랜잭션 시퀀스 번호)입니다.
snapshot_id int 행 버전 관리를 사용하여 커밋된 읽기에서 시작된 각 Transact-SQL 문의 스냅샷 ID입니다. 이 값은 행 버전 관리를 사용하여 커밋된 읽기로 실행되는 각 쿼리를 지원하는 트랜잭션이 일관된 데이터베이스 뷰를 생성하는 데 사용됩니다.
snapshot_sequence_num bigint 스냅샷 트랜잭션 시작 당시 활성화된 트랜잭션의 트랜잭션 시퀀스 번호입니다.

사용 권한

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 권한이 필요합니다.

설명

스냅샷 트랜잭션이 시작되면 데이터베이스 엔진 해당 시간에 활성 상태인 모든 트랜잭션을 기록합니다. sys.dm_tran_transactions_snapshot 현재 활성 상태인 모든 스냅샷 트랜잭션에 대해 이 정보를 보고합니다.

각 트랜잭션은 트랜잭션이 시작될 때 할당되는 트랜잭션 시퀀스 번호로 식별됩니다. 트랜잭션은 BEGIN TRANSACTION 또는 BEGIN WORK 문이 실행될 때 시작됩니다. 그러나 데이터베이스 엔진 BEGIN TRANSACTION 또는 BEGIN WORK 문 다음에 데이터에 액세스하는 첫 번째 Transact-SQL 문의 실행과 함께 트랜잭션 시퀀스 번호를 할당합니다. 트랜잭션 시퀀스 번호는 1씩 증가합니다.

참고 항목

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