Change Data Capture - sys.dm_cdc_log_scan_sessions
Si applica a: SQL Server Database SQL di Azure 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