sys.dm_tran_transactions_snapshot (Transact-SQL)

Retourne une table virtuelle pour les numéros de séquence des transactions qui sont actives au démarrage de chaque transaction de capture instantanée. Les informations retournées par cette vue peuvent vous être utiles pour les opérations suivantes :

  • Rechercher le nombre de transactions de capture instantanée actives.

  • Identifier les modifications de données qui sont ignorées par une transaction de capture instantanée spécifique. Pour une transaction qui est active lorsqu'une transaction de capture instantanée démarre, toutes les modifications de données effectuées par cette transaction (même après sa validation) sont ignorées par la transaction de capture instantanée.

Prenons par exemple le résultat suivant de sys.dm_tran_transactions_snapshot :

transaction_sequence_num snapshot_id snapshot_sequence_num
------------------------ ----------- ---------------------
59                       0           57
59                       0           58
60                       0           57
60                       0           58
60                       0           59
60                       3           57
60                       3           58
60                       3           59
60                       3           60

La colonne transaction_sequence_num identifie le numéro de séquence de transaction (XSN) des transactions de capture instantanée actives. Le résultat indique deux valeurs : 59 et 60. La colonne snapshot_sequence_num identifie le numéro de séquence des transactions qui sont actives au moment où chaque transaction de capture instantanée démarre.

Le résultat indique que la transaction de capture instantanée XSN-59 démarre alors que deux transactions actives, XSN-57 et XSN-58, sont en cours d'exécution. Si XSN-57 ou XSN-58 effectue des modifications de données, XSN-59 ignore les changements et utilise le contrôle de version de ligne pour assurer une vue cohérente, d'un point de vue transactionnel, de la base de données.

La transaction de capture instantanée XSN-60 ignore les modifications de données apportées par XSN-57, XSN-58 et également XSN 59.

Syntaxe

dm_tran_transactions_snapshot

Table retournée

Nom de colonne

Type de données

Description

transaction_sequence_num

bigint

Numéro de séquence (XSN) d'une transaction de capture instantanée.

snapshot_id

int

Identificateur de capture instantanée pour chaque instruction Transact-SQL lancée en mode de lecture validée à l'aide du contrôle de version de ligne. Cette valeur permet de générer une vue cohérente, d'un point de vue transactionnel, de la base de données prenant en charge chaque requête qui est exécutée en mode de lecture validée à l'aide du contrôle de version de ligne.

snapshot_sequence_num

bigint

Numéro de séquence d'une transaction qui était active lorsque la transaction de capture instantanée a commencé.

Autorisations

L'autorisation VIEW SERVER STATE est nécessaire sur le serveur.

Notes

Lorsqu'une transaction de capture instantanée démarre, le moteur de base de données enregistre toutes les transactions qui sont actives à ce moment précis. sys.dm_tran_transactions_snapshot fournit ces informations pour toutes les transactions de capture instantanée actuellement actives.

Chaque transaction est identifiée par un numéro de séquence qui lui est affecté au moment où elle commence. Les transactions commencent au moment où une instruction BEGIN TRANSACTION ou BEGIN WORK est exécutée. Toutefois, le moteur de base de données n'attribue le numéro de séquence de la transaction que lors de l'exécution de la première instruction Transact-SQL qui accède aux données suite à l'instruction BEGIN TRANSACTION ou BEGIN WORK. Les numéros de séquence des transactions sont incrémentés d'une unité à la fois.