sys.dm_tran_active_transactions (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Retourne des informations sur les transactions pour l’instance de SQL Server.

Remarque

Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme d’analyse (PDW), utilisez le nom sys.dm_pdw_nodes_tran_active_transactions. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Nom de la colonne Type de données Description
transaction_id bigint ID de la transaction au niveau de l'instance, et non au niveau de la base de données. Cet ID est unique pour toutes les bases de données d'une instance, mais pas pour toutes les instances du serveur.
name nvarchar(32) Nom de la transaction. Ce nom est remplacé si la transaction est marquée et que le nom marqué remplace le nom de la transaction.
transaction_begin_time datetime Heure de début de la transaction.
transaction_type int Type de transaction.

1 = transaction en lecture/écriture

2 = transaction en lecture seule

3 = transaction système

4 = transaction distribuée
transaction_uow uniqueidentifier Identificateur de l'unité de travail de la transaction pour les transactions distribuées. MS DTC utilise cet identificateur pour agir sur la transaction distribuée.
transaction_state int 0 = La transaction n'a pas encore été complètement initialisée.

1 = La transaction a été initialisée mais n'a pas démarré.

2 = La transaction est active.

3 = La transaction est terminée. Cette valeur est utilisée pour les transactions en lecture seule.

4 = Le processus de validation a été lancé sur la transaction distribuée. Cette valeur s'applique aux transactions distribuées uniquement. La transaction distribuée est toujours active, mais aucun traitement ultérieur ne peut avoir lieu.

5 = La transaction est en état préparé et attend d'être résolue.

6 = La transaction a été validée.

7 = La transaction est en cours de restauration.

8 = La transaction a été restaurée.
transaction_status int Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
transaction_status2 int Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
dtc_state int S’applique à : Azure SQL Database (version initiale via la version actuelle).

1 = ACTIF

2 = PRÉPARÉ

3 = VALIDÉ

4 = ABANDONNÉ

5 = RÉCUPÉRÉ
dtc_status int Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
dtc_isolation_level int Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
filestream_transaction_id varbinary(128) S’applique à : Azure SQL Database (version initiale via la version actuelle).

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
pdw_node_id int S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)

Identificateur du nœud sur lequel cette distribution est activée.

Autorisations

Sur SQL Server et SQL Managed Instance, l’autorisation VIEW SERVER STATE est requise.

Sur les objectifs de service SQL Database Basic, S0 et S1, et pour les bases de données dans des pools élastiques, le compte d’administrateur du serveur, le compte d’administrateur Microsoft Entra ou l’appartenance au ##MS_ServerStateReader##rôle serveur est requis. Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerStateReader## est requise.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Exemples

R. Utilisation de sys.dm_tran_active_transactions avec d’autres DMV pour trouver des informations sur les transactions actives

L’exemple suivant montre toutes les transactions actives sur le système et fournit des informations détaillées sur la transaction, la session utilisateur, l’application envoyée et la requête qui l’a démarrée et bien d’autres.

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;

Voir aussi

sys.dm_tran_session_transactions (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
Fonctions et vues de gestion dynamique (Transact-SQL)
Fonctions et vues de gestion dynamique relatives aux transactions (Transact-SQL)