Udostępnij za pomocą


sys.dm_tran_active_transactions (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Widok sys.dm_tran_active_transactions dynamicznego zarządzania zwraca informacje o transakcjach dla danego przypadku.

Nazwa kolumny Typ danych Description
transaction_id bigint Identyfikacja transakcji na poziomie instancji, a nie bazy danych. Jest unikalny tylko we wszystkich bazach danych w jednej instancji, ale nie jest unikalny dla wszystkich instancji serwera.
name nvarchar(32) Nazwa transakcji. Jest to nadpisywane, jeśli transakcja jest oznaczona, a oznaczona nazwa zastępuje nazwę transakcji.
transaction_begin_time datetime Czas, w którym transakcja się rozpoczęła.
transaction_type int Rodzaj transakcji.

1 = Transakcja odczytu/zapisu

2 = Transakcja tylko do odczytu

3 = Transakcja systemowa

4 = Transakcja rozproszona
transaction_uow uniqueidentifier Identyfikator jednostki pracy transakcji (UOW) dla transakcji rozproszonych. Koordynator transakcji rozproszonych Microsoft (MS DTC) wykorzystuje identyfikator UOW do pracy z transakcją rozproszoną.
transaction_state int 0 = Transakcja nie została jeszcze całkowicie zainicjalizowana.

1 = Transakcja została zainicjalizowana, ale nie została rozpoczęta.

2 = Transakcja jest aktywna.

3 = Transakcja została zakończona. Używane do transakcji tylko do odczytu.

4 = Proces zatwierdzania został zainicjowany na transakcji rozproszonej. Tylko dla transakcji rozproszonych. Rozproszona transakcja jest nadal aktywna, ale dalsze przetwarzanie nie może być możliwe.

5 = Transakcja jest w stanie przygotowanym i oczekuje na rozwiązanie.

6 = Transakcja została zatwierdzona.

7 = Transakcja jest cofana do tyłu.

8 = Transakcja została cofnięta.
transaction_status int Zidentyfikowane tylko do celów informacyjnych. Niewspierane. Zgodność w przyszłości nie jest gwarantowana.
transaction_status2 int Zidentyfikowane tylko do celów informacyjnych. Niewspierane. Zgodność w przyszłości nie jest gwarantowana.
dtc_state int Dotyczy: Azure SQL Database.

1 = AKTYWNE

2 = PRZYGOTOWANE

3 = ZOBOWIĄZANIE

4 = PRZERWANE

5 = ODZYSKANE
dtc_status int Zidentyfikowane tylko do celów informacyjnych. Niewspierane. Zgodność w przyszłości nie jest gwarantowana.
dtc_isolation_level int Zidentyfikowane tylko do celów informacyjnych. Niewspierane. Zgodność w przyszłości nie jest gwarantowana.
filestream_transaction_id varbinary(128) Dotyczy: Azure SQL Database.

Zidentyfikowane tylko do celów informacyjnych. Niewspierane. Zgodność w przyszłości nie jest gwarantowana.
pdw_node_id int Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW)

Identyfikator węzła, w ramach którego znajduje się ta dystrybucja.

Permissions

W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.

W Microsoft Fabric, do zapytań sys.dm_tran_active_transactionswymagane jest członkostwo w roliWspółtwórcy lub bardziej uprzywilejowanej roli .

W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Uwagi

Aby nazwać ten dynamiczny widok zarządzania z Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_tran_active_transactions Ta składnia nie jest obsługiwana przez serwerless pool SQL w Azure Synapse Analytics.

Przykłady

A. Korzystaj z sys.dm_tran_active_transactions z innymi DMV, aby znaleźć informacje o aktywnych transakcjach

Poniższy przykład pokazuje aktywne transakcje w systemie. Zapytanie dostarcza szczegółowych informacji o transakcji, sesji użytkownika, aplikacji, która ją wysłała, zapytaniu ją rozpoczęło i wielu innych.

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;