sys.dm_tran_current_transaction (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Retourne une seule ligne qui affiche des informations sur l'état de la transaction dans la session active.

Remarque

Pour l’appeler à partir d’Azure Synapse Analytics ou d’Analytics Platform System (PDW), utilisez le nom sys.dm_pdw_nodes_tran_current_transaction. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Syntaxe

  
sys.dm_tran_current_transaction  

Table retournée

Nom de la colonne Type de données Description
transaction_id bigint ID de transaction de l'instantané actif.
transaction_sequence_num bigint Numéro de séquence de la transaction qui produit la version de l'enregistrement.
transaction_is_snapshot bit État d'isolement de l'instantané. Cette valeur est 1 si la transaction a démarré sous l'isolement d'instantané. Dans le cas contraire, la valeur est 0.
first_snapshot_sequence_num bigint Il s'agit du plus petit numéro de séquence des transactions qui étaient actives lors de la création d'un instantané. Lors de l'exécution, une transaction d'instantané prend un instantané de toutes les transactions actives présentes. Pour les transactions non liées à des instantanés, la valeur 0 est affichée dans cette colonne.
last_transaction_sequence_num bigint Numéro de séquence global. Cette valeur représente le dernier numéro de séquence de transaction généré par le système.
first_useful_sequence_num bigint Numéro de séquence global. Cette valeur représente le plus ancien numéro de séquence de la transaction qui possède des versions de ligne devant être conservées dans la banque des versions. Les versions de ligne qui ont été créées par des transactions antérieures peuvent être supprimées.
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

L'exemple suivant illustre un scénario de test dans lequel quatre transactions simultanées, chacune étant identifiée par un numéro de séquence de transaction, sont exécutées dans une base de données où les options ALLOW_SNAPSHOT_ISOLATION et READ_COMMITTED_SNAPSHOT sont définies à ON. Les transactions suivantes sont exécutées :

  • XSN-57 est une opération Update exécutée avec le niveau d'isolement sérialisable.

  • XSN-58 est identique à XSN-57.

  • XSN-59 est une opération Select exécutée avec le niveau d'isolement d'instantané.

  • XSN-60 est identique à XSN-59.

La requête suivante est exécutée dans l'étendue de chaque transaction.

SELECT   
    transaction_id  
   ,transaction_sequence_num  
   ,transaction_is_snapshot  
   ,first_snapshot_sequence_num  
   ,last_transaction_sequence_num  
   ,first_useful_sequence_num  
  FROM sys.dm_tran_current_transaction;  

Voici le résultat de XSN-59.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9387                 59                       1                         
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
57                               61                        
  
first_useful_sequence_num  
-------------------------  
57  

La sortie indique que XSN-59 est une transaction d'instantané qui utilise XSN-57 comme première transaction active lorsque XSN-59 a démarré. Ceci signifie que XSN-59 lit les données validées par les transactions possédant un numéro de séquence de transaction inférieur à XSN-57.

Voici le résultat de XSN-57.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9295                 57                       0  
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
NULL                        61  
  
first_useful_sequence_num  
-------------------------  
57  

Étant donné que XSN-57 n'est pas une transaction d'instantané, first_snapshot_sequence_num est NULL.

Voir aussi

Fonctions et vues de gestion dynamique (Transact-SQL)
Fonctions et vues de gestion dynamique relatives aux transactions (Transact-SQL)