sys.dm_tran_active_transactions(Transact-SQL)
적용 대상: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System(PDW)
SQL Server 인스턴스의 트랜잭션에 대한 정보를 반환합니다.
참고 항목
Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 이를 호출하려면 이름 sys.dm_pdw_nodes_tran_active_transactions 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
transaction_id | bigint | 데이터베이스 수준이 아닌 인스턴스 수준의 트랜잭션 ID입니다. 이 ID는 한 인스턴스 내의 모든 데이터베이스에서 고유하지만 모든 서버 인스턴스에서 고유하지는 않습니다. |
name | nvarchar(32) | 트랜잭션 이름입니다. 트랜잭션이 표시된 경우 표시된 이름이 트랜잭션 이름을 덮어쓰며 이를 대체합니다. |
transaction_begin_time | 날짜/시간 | 트랜잭션이 시작된 시간입니다. |
transaction_type | int | 트랜잭션 유형입니다. 1 = 읽기/쓰기 트랜잭션 2 = 읽기 전용 트랜잭션 3 = 시스템 트랜잭션 4 = 분산 트랜잭션 |
transaction_uow | uniqueidentifier | 분산 트랜잭션에 대한 UOW(트랜잭션 단위) 식별자입니다. MS DTC에서는 UOW 식별자를 사용하여 분산 트랜잭션 작업을 수행합니다. |
transaction_state | int | 0 = 트랜잭션이 아직 완전히 초기화되지 않았습니다. 1 = 트랜잭션이 초기화되었지만 시작되지 않았습니다. 2 = 트랜잭션이 활성 상태입니다. 3 = 트랜잭션이 종료되었습니다. 읽기 전용 트랜잭션에 사용됩니다. 4 = 분산 트랜잭션에서 커밋 프로세스가 시작되었습니다. 이것은 분산 트랜잭션에만 사용됩니다. 분산 트랜잭션은 여전히 활성 상태이지만 추가 처리는 수행할 수 없습니다. 5 = 트랜잭션이 준비된 상태이며 확인 대기 중입니다. 6 = 트랜잭션이 커밋되었습니다. 7 = 트랜잭션이 롤백되고 있습니다. 8 = 트랜잭션이 롤백되었습니다. |
transaction_status | int | 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다. |
transaction_status2 | int | 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다. |
dtc_state | int | 적용 대상: Azure SQL Database(현재 릴리스를 통한 초기 릴리스). 1 = 활성 2 = 준비 3 = 커밋됨 4 = 중단됨 5 = 복구됨 |
dtc_status | int | 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다. |
dtc_isolation_level | int | 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다. |
filestream_transaction_id | varbinary(128) | 적용 대상: Azure SQL Database(현재 릴리스를 통한 초기 릴리스). 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다. |
pdw_node_id | int | 적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW) 이 배포가 있는 노드의 식별자입니다. |
사용 권한
SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE
권한이 필요합니다.
SQL Database Basic, S0 및 S1 서비스 목표 및 탄력적 풀의 데이터베이스에는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 서버 역할의 ##MS_ServerStateReader##
멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE
권한 또는 ##MS_ServerStateReader##
서버 역할의 멤버 자격이 필요합니다.
SQL Server 2022 이상에 대한 권한
서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.
예제
A. 다른 DMV와 sys.dm_tran_active_transactions 사용하여 활성 트랜잭션에 대한 정보 찾기
다음 예에서는 시스템의 활성 트랜잭션을 보여 줍니다. 트랜잭션, 사용자 세션, 제출된 애플리케이션 및 해당 트랜잭션을 시작한 쿼리 및 기타 여러 쿼리에 대한 자세한 정보를 제공합니다.
SELECT
GETDATE() as now,
DATEDIFF(SECOND, transaction_begin_time, GETDATE()) as tran_elapsed_time_seconds,
st.session_id,
txt.text,
*
FROM
sys.dm_tran_active_transactions at
INNER JOIN sys.dm_tran_session_transactions st ON st.transaction_id = at.transaction_id
LEFT OUTER JOIN sys.dm_exec_sessions sess ON st.session_id = sess.session_id
LEFT OUTER JOIN sys.dm_exec_connections conn ON conn.session_id = sess.session_id
OUTER APPLY sys.dm_exec_sql_text(conn.most_recent_sql_handle) AS txt
ORDER BY
tran_elapsed_time_seconds DESC;
참고 항목
sys.dm_tran_session_transactions(Transact-SQL)
sys.dm_tran_database_transactions(Transact-SQL)
동적 관리 뷰 및 함수(Transact-SQL)
트랜잭션 관련 동적 관리 뷰 및 함수(Transact-SQL)