Change Data Capture - sys.dm_cdc_log_scan_sessions

Si applica a:SQL ServerDatabase SQL diAzure Istanza gestita di SQL di Azure

Restituisce una riga per ogni sessione di analisi dei log nel database corrente. L'ultima riga restituita rappresenta la sessione corrente. È possibile usare questa vista per restituire informazioni sullo stato relative alla sessione di analisi del log corrente o informazioni aggregate su tutte le sessioni dall'ultimo avvio dell'istanza di SQL Server.

I record in sys.dm_cdc_log_scan_sessions vengono reimpostati ogni volta che l'istanza di SQL Server viene riavviata o dopo un failover. Inoltre, se il database sottoposto a query si trova nel ruolo secondario di un gruppo di disponibilità AlwaysOn, non vengono restituiti record.

Per altre informazioni, vedere Che cos'è Change Data Capture (CDC)?

Nome colonna Tipo di dati Descrizione
session_id int ID della sessione.

0 = i dati restituiti in questa riga sono un'aggregazione di tutte le sessioni dall'ultimo avvio dell'istanza di SQL Server.
start_time datetime Ora di inizio della sessione.

Quando session_id = 0, è iniziata la raccolta di dati aggregati.
end_time datetime Ora di fine della sessione.

NULL = la sessione è attiva.

Quando session_id = 0, l'ora di fine dell'ultima sessione.
duration int Durata della sessione espressa in secondi.

0 = la sessione non contiene transazioni di acquisizione dei dati delle modifiche.

Quando session_id = 0, la somma della durata (in secondi) di tutte le sessioni con transazioni change data capture.
scan_phase nvarchar(200) La fase corrente della sessione. Di seguito sono riportati i valori possibili e le relative descrizioni:

1: Lettura della configurazione
2: Prima analisi, compilazione della tabella hash
3: Seconda analisi
4: Seconda analisi
5: Seconda analisi
6: Controllo delle versioni dello schema
7: Ultima analisi
8: Operazione completata

Quando session_id = 0, questo valore è sempre "Aggregate".
error_count int Numero di errori.

Quando session_id = 0, il numero totale di errori in tutte le sessioni.
start_lsn nvarchar(23) Avvio di LSN per la sessione.

Quando session_id = 0, l'LSN iniziale per l'ultima sessione.
current_lsn nvarchar(23) LSN corrente in corso di analisi.

Quando session_id = 0, l'LSN corrente è 0.
end_lsn nvarchar(23) Numero LSN finale per la sessione.

NULL = la sessione è attiva.

Quando session_id = 0, l'LSN finale per l'ultima sessione.
tran_count bigint Numero di transazioni di acquisizione dei dati delle modifiche elaborate. Questo contatore viene popolato nella fase 2.

Quando session_id = 0, il numero di transazioni elaborate in tutte le sessioni.
last_commit_lsn nvarchar(23) LSN dell'ultimo record di log del commit elaborato.

Quando session_id = 0, l'ultimo record di log di commit LSN per qualsiasi sessione.
last_commit_time datetime Ora di elaborazione dell'ultimo record di log del commit.

Quando session_id = 0, ora dell'ultimo record del log di commit per qualsiasi sessione.
log_record_count bigint Numero dei record di log analizzati.

Quando session_id = 0, numero di record analizzati per tutte le sessioni.
schema_change_count int Numero di operazioni DDL (Data Definition Language) rilevate. Questo contatore viene popolato durante la fase 6.

Quando session_id = 0, il numero di operazioni DDL elaborate in tutte le sessioni.
command_count bigint Numero di comandi elaborati.

Quando session_id = 0, il numero di comandi elaborati in tutte le sessioni.
first_begin_cdc_lsn nvarchar(23) Primo numero LSN contenente transazioni di acquisizione dei dati delle modifiche.

Quando session_id = 0, il primo LSN che conteneva transazioni change data capture.
last_commit_cdc_lsn nvarchar(23) Numero LSN dell'ultimo record di log del commit contenente transazioni di acquisizione dei dati delle modifiche.

Quando session_id = 0, LSN dell'ultimo record del log di commit per qualsiasi sessione che contiene transazioni change data capture
last_commit_cdc_time datetime Ora di elaborazione dell'ultimo record di log del commit contenente transazioni di acquisizione dei dati delle modifiche.

Quando session_id = 0, ora dell'ultimo record del log di commit per qualsiasi sessione contenente transazioni change data capture.
Latenza int Differenza, in secondi, tra end_time e last_commit_cdc_time nella sessione. Questo contatore viene popolato al termine della fase 7.

Quando session_id = 0, l'ultimo valore di latenza diverso da zero registrato da una sessione.
empty_scan_count int Numero di sessioni consecutive che non contengono transazioni di acquisizione dei dati delle modifiche.
failed_sessions_count int Numero di sessioni non riuscite.

Osservazioni:

La sys.dm_cdc_log_scan_sessions DMV contiene fino a 32 sessioni di analisi e un'aggregazione di tutte le sessioni di analisi con session_id= 0. Pertanto, in qualsiasi momento, questa vista a gestione dinamica può contenere un massimo di 33 righe.

Autorizzazioni

È richiesta l'autorizzazione VIEW DATABASE STATE per eseguire query sulla vista a sys.dm_cdc_log_scan_sessions gestione dinamica. Per altre informazioni sulle autorizzazioni per le viste a gestione dinamica, vedere Funzioni e viste a gestione dinamica (Transact-SQL).

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW DATABASE PERFORMANCE STATE per il database.

Esempi

Nell'esempio seguente vengono restituite informazioni relative alla sessione più recente.

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  

Passaggi successivi