sys.dm_tran_current_transaction (Transact-SQL)

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

Syntaxe

sys.dm_tran_current_transaction

Table retournée

Nom de colonne

Type de données

Description

transaction_id

bigint

ID de transaction de la capture instantanée active.

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 la capture instantanée. Cette valeur est 1 si la transaction a démarré sous l'isolement de capture instantanée. 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'une capture instantanée. Lors de l'exécution, une transaction de capture instantanée prend une capture instantanée de toutes les transactions actives présentes. Pour les transactions non liées à des captures instantanées, 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.

Autorisations

Nécessite l'autorisation VIEW SERVER 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 de capture instantanée.

  • 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 de capture instantanée 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 de capture instantanée, first_snapshot_sequence_num est NULL.