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.