sys.dm_tran_current_snapshot (Transact-SQL)

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

Retourne une table virtuelle qui affiche toutes les transactions qui sont actives au moment où la transaction d'instantané active démarre. Si la transaction actuelle n'est pas une transaction d'instantané, cette fonction ne retourne aucune ligne. sys.dm_tran_current_snapshot est similaire à sys.dm_tran_transactions_snapshot, sauf que sys.dm_tran_current_snapshot retourne uniquement les transactions actives pour la transaction d’instantané actuelle.

Remarque

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

Syntaxe

  
sys.dm_tran_current_snapshot  

Table retournée

Nom de la colonne Type de données Description
transaction_sequence_num bigint Numéro de séquence de la transaction active.
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 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.

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 XSN-59.

SELECT   
    transaction_sequence_num  
  FROM sys.dm_tran_current_snapshot;  

Voici le jeu de résultats.

transaction_sequence_num  
------------------------  
57  
58  

Les résultats indiquent que XSN-57 et XSN-58 étaient actives au moment où la transaction d'instantané XSN-59 a démarré. Ce même résultat persiste, même après la validation ou l'annulation de XSN-57 et XSN-58, jusqu'à la fin de la transaction d'instantané.

La même requête est exécutée dans l'étendue de XSN-60.

Voici le jeu de résultats.

transaction_sequence_num  
------------------------  
57  
58  
59  

La sortie de XSN-60 inclut les mêmes transactions que celles qui apparaissent pour XSN-59, mais elle inclut également XSN-59, qui était active lorsque XSN-60 a démarré.

Voir aussi

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