Capture des changements de données – sys.dm_cdc_log_scan_sessions

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Retourne une ligne pour chaque session d'analyse du journal dans la base de données actuelle. La dernière ligne retournée représente la session active. Vous pouvez utiliser cette vue pour retourner des informations d’état sur la session d’analyse du journal en cours, ou des informations agrégées sur toutes les sessions depuis le dernier démarrage de l’instance de SQL Server.

Les enregistrements dans sys.dm_cdc_log_scan_sessions sont réinitialisés chaque fois que le instance de SQL Server est redémarré ou après un basculement. En outre, si la base de données interrogée est dans le rôle secondaire d’un groupe de disponibilité Always On, aucun enregistrement n’est retourné.

Pour plus d’informations, consultez Qu’est-ce que la capture de données modifiées (CDC) ?

Nom de la colonne Type de données Description
session_id int ID de la session.

0 = Les données retournées dans cette ligne sont un agrégat de toutes les sessions depuis le dernier démarrage de l’instance de SQL Server.
heure-début datetime Heure de début de la session.

Quand session_id = 0, heure à laquelle la collecte des données agrégées a démarré.
heure-fin datetime Heure de fin de la session.

NULL = la session est active.

Quand session_id = 0, heure à laquelle la session s’est terminée.
duration int Durée (en secondes) de la session.

0 = la session ne contient pas de transactions de capture des données modifiées.

Quand session_id = 0, somme de la durée (en secondes) de toutes les sessions comportant des transactions de capture des changements de données.
scan_phase nvarchar(200) Phase actuelle de la session. Voici les valeurs possibles et leurs descriptions :

1 : Lecture de la configuration
2 : Première analyse, génération de la table de hachage
3 : Deuxième analyse
4 : Deuxième analyse
5 : Deuxième analyse
6 : Versioning des schémas
7 : Dernière analyse
8 : Fin

Quand session_id = 0, cette valeur est toujours « Agrégation ».
error_count int Nombre d'erreurs rencontrées.

Quand session_id = 0, nombre total d’erreurs dans toutes les sessions.
start_lsn nvarchar(23) Numéro séquentiel dans le journal de démarrage pour la session.

Quand session_id = 0, numéro séquentiel dans le journal (LSN) de début de la dernière session.
current_lsn nvarchar(23) Numéro séquentiel dans le journal actuel qui est analysé.

Quand session_id = 0, le LSN actuel est 0.
end_lsn nvarchar(23) Numéro séquentiel dans le journal de fin pour la session.

NULL = la session est active.

Quand session_id = 0, numéro séquentiel dans le journal (LSN) de fin de la dernière session.
tran_count bigint Nombre de transactions de capture des données modifiées traitées. Ce compteur est rempli lors de la phase 2.

Quand session_id = 0, nombre de transactions traitées dans toutes les sessions.
last_commit_lsn nvarchar(23) Numéro séquentiel dans le journal du dernier enregistrement du journal de validation traité.

Quand session_id = 0, numéro séquentiel dans le journal (LSN) du dernier enregistrement du journal de validation pour toute session.
last_commit_time datetime Heure de traitement du dernier enregistrement du journal de validation.

Quand session_id = 0, heure du dernier enregistrement du journal de validation pour toute session.
log_record_count bigint Nombre d'enregistrements du journal analysés.

Quand session_id = 0, nombre d’enregistrements analysés pendant toutes les sessions.
schema_change_count int Nombre d'opérations de langage de définition de données (DDL) détectées. Ce compteur est rempli lors de la phase 6.

Quand session_id = 0, nombre d’opérations DDL traitées dans toutes les sessions.
command_count bigint Nombre de commandes traitées.

Quand session_id = 0, nombre de commandes traitées dans toutes les sessions.
first_begin_cdc_lsn nvarchar(23) Premier numéro séquentiel dans le journal qui contenait des transactions de capture des données modifiées.

Quand session_id = 0, premier numéro séquentiel dans le journal (LSN) qui contenait des transactions de capture des changements de données.
last_commit_cdc_lsn nvarchar(23) Numéro séquentiel dans le journal du dernier enregistrement du journal de validation qui contenait des transactions de capture des données modifiées.

Quand session_id = 0, numéro séquentiel dans le journal (LSN) du dernier enregistrement du journal de validation pour toute session qui contenait des transactions de capture des changements de données
last_commit_cdc_time datetime Heure de traitement du dernier enregistrement du journal de validation qui contenait des transactions de capture des données modifiées.

Quand session_id = 0, heure du dernier enregistrement du journal de validation pour toute session qui contenait des transactions de capture des changements de données.
latency int Différence, exprimée en secondes, entre end_time et last_commit_cdc_time dans la session. Ce compteur est rempli à la fin de la phase 7.

Quand session_id = 0, dernière valeur de latence différente de zéro enregistrée par une session.
empty_scan_count int Nombre de sessions consécutives qui ne contenaient aucune transaction de capture des données modifiées.
failed_sessions_count int Nombre de sessions qui ont échoué.

Notes

La sys.dm_cdc_log_scan_sessions DMV contient jusqu’à 32 sessions d’analyse et un agrégat de toutes les sessions d’analyse avec session_id= 0. Ainsi, à tout moment, cette vue de gestion dynamique peut contenir un maximum de 33 lignes.

Autorisations

Nécessite l'autorisation VIEW DATABASE STATE pour interroger la vue de gestion dynamique sys.dm_cdc_log_scan_sessions. Pour plus d’informations sur les autorisations des vues de gestion dynamique, consultez Fonctions et vues de gestion dynamique (Transact-SQL).

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données.

Exemples

L'exemple suivant retourne des informations pour la session la plus active.

USE AdventureWorks2022;  
GO  
SELECT session_id, start_time, end_time, duration, scan_phase,  
    error_count, start_lsn, current_lsn, end_lsn, tran_count,  
    last_commit_lsn, last_commit_time, log_record_count, schema_change_count,  
    command_count, first_begin_cdc_lsn, last_commit_cdc_lsn,   
    last_commit_cdc_time, latency, empty_scan_count, failed_sessions_count  
FROM sys.dm_cdc_log_scan_sessions  
WHERE session_id = (SELECT MAX(b.session_id) FROM sys.dm_cdc_log_scan_sessions AS b);  
GO  

Étapes suivantes