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 풀에서 지원되지 않습니다.

열 이름 데이터 형식 Description
transaction_id bigint 데이터베이스 수준이 아닌 인스턴스 수준의 트랜잭션 ID입니다. 이 ID는 한 인스턴스 내의 모든 데이터베이스에서 고유하지만 모든 서버 인스턴스에서 고유하지는 않습니다.
name nvarchar(32) 트랜잭션 이름입니다. 트랜잭션이 표시된 경우 표시된 이름이 트랜잭션 이름을 덮어쓰며 이를 대체합니다.
transaction_begin_time datetime 트랜잭션이 시작된 시간입니다.
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, 분석 플랫폼 시스템(PDW)

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

사용 권한

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

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

예제

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)