Partager via


sys.dm_tran_transactions_snapshot (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Retourne une table virtuelle pour la sequence_number des transactions actives au démarrage de chaque transaction d’instantané. Les informations retournées par cette vue peuvent vous être utiles pour les opérations suivantes :

  • Rechercher le nombre de transactions d'instantané actives.

  • Identifier les modifications de données qui sont ignorées par une transaction d'instantané spécifique. Pour une transaction qui est active lorsqu'une transaction d'instantané 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 d'instantané.

Par exemple, considérez la sortie suivante 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 d'instantané 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 d'instantané démarre.

Le résultat indique que la transaction d'instantané 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 d'instantané XSN-60 ignore les modifications de données apportées par XSN-57, XSN-58 et également XSN 59.

Table retournée

Nom de la colonne Type de données Description
transaction_sequence_num bigint Numéro de séquence (XSN) d'une transaction d'instantané.
snapshot_id int ID d’instantané pour chaque instruction Transact-SQL démarrée sous 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 d'instantané a commencé.

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 les pools élastiques, le compte d’administration du serveur, le compte d’administration Microsoft Entra ou l’appartenance dans ##MS_ServerStateReader## au rôle de 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.

Notes

Lorsqu’une transaction d’instantané démarre, la Moteur de base de données enregistre toutes les transactions actives à ce moment-là. sys.dm_tran_transactions_snapshot signale ces informations pour toutes les transactions d’instantanés 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 attribue le numéro de séquence de transactions avec l’exécution de la première instruction Transact-SQL qui accède aux données après l’instruction BEGIN TRANSACTION ou BEGIN WORK. Les numéros de séquence des transactions sont incrémentés d'une unité à la fois.

Voir aussi

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