Capture des changements de données – sys.dm_cdc_log_scan_sessions
S’applique à : SQL ServerAzure SQL Database Azure 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 l’instance de SQL Server est redémarrée ou après un basculement. En outre, si la base de données interrogée se trouve 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
vue DMV contient jusqu’à 32 sessions d’analyse et un agrégat de toutes les sessions d’analyse avec session_id= 0
. Ainsi, à tout moment donné, 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