Captura de datos modificados: sys.dm_cdc_log_scan_sessions

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Devuelve una fila para cada sesión de recorrido de registro de la base de datos actual. La última fila devuelta representa la sesión actual. Puede usar esta vista para devolver información de estado sobre la sesión de examen de registro actual, o bien información agregada sobre todas las sesiones desde que la instancia de SQL Server se inició por última vez.

Los registros de sys.dm_cdc_log_scan_sessions se restablecen siempre que se reinicie la instancia de SQL Server o después de que se produzca una conmutación por error. Además, si la base de datos consultada está en el rol secundario de un grupo de disponibilidad de Always On, no se devuelve ningún registro.

Para más información, consulte ¿Qué es la captura de datos modificados (CDC)?

Nombre de la columna Tipo de datos Descripción
session_id int Id. de la sesión.

0 = los datos devueltos en esta fila son un agregado de todas las sesiones desde que la instancia de SQL Server se inició por última vez.
start_time datetime Hora que la sesión comenzó.

Cuando session_id = 0, hora en que comenzó la recopilación de datos agregados.
end_time datetime Hora a la que finalizó la sesión

NULL = la sesión está activa.

Cuando session_id = 0, hora en que finalizó la última sesión.
duration int Duración, en segundos, de la sesión

0 = la sesión no contiene transacciones de captura de datos de cambio.

Cuando session_id = 0, suma de la duración (en segundos) de todas las sesiones con transacciones de captura de datos de cambio.
scan_phase nvarchar(200) La fase actual de la sesión. Estos son los valores posibles y sus descripciones:

1: Configuración de lectura
2: Primer examen, creación de la tabla hash
3: Segundo examen
4: Segundo examen
5: Segundo examen
6: Versión del esquema
7: Último examen
8: Listo

Cuando session_id = 0, este valor siempre es "Aggregate".
error_count int Número máximo de errores detectados

Cuando session_id = 0, número total de errores en todas las sesiones.
start_lsn nvarchar(23) Iniciar LSN para la sesión.

Cuando session_id = 0, LSN inicial de la última sesión.
current_lsn nvarchar(23) LSN actual del que se realiza un recorrido.

Cuando session_id = 0, el LSN actual es cero.
end_lsn nvarchar(23) LSN final de la sesión.

NULL = la sesión está activa.

Cuando session_id = 0, LSN final de la última sesión.
tran_count bigint Número de transacciones de captura de datos de cambio procesados. Este contador se rellena en la fase 2.

Cuando session_id = 0, número de transacciones procesadas en todas las sesiones.
last_commit_lsn nvarchar(23) LSN de la última entrada del registro de confirmación procesada.

Cuando session_id = 0, último LSN de entrada registro de confirmación para cualquier sesión.
last_commit_time datetime Hora de procesamiento de la última entrada del registro de confirmación.

Cuando session_id = 0, hora de la última entrada de registro de confirmación para cualquier sesión.
log_record_count bigint Número de entradas de registro de las que se ha realizado un recorrido.

Cuando session_id = 0, número de registros examinados en todas las sesiones.
schema_change_count int Número de operaciones de lenguaje de definición de datos (DDL) detectadas. Este contador se rellena en la fase 6.

Cuando session_id = 0, número de operaciones DDL procesadas en todas las sesiones.
command_count bigint Número de comandos procesados.

Cuando session_id = 0, número total de comandos procesados en todas las sesiones.
first_begin_cdc_lsn nvarchar(23) Primer LSN que contenía las transacciones de captura de los datos de cambio.

Cuando session_id = 0, primer LSN que contenía las transacciones de captura de datos modificados.
last_commit_cdc_lsn nvarchar(23) LSN de la última entrada de registro de confirmación que contenía las transacciones de captura de los datos de cambio.

Cuando session_id = 0, último LSN de entrada de registro de confirmación para cualquier sesión que contenía las transacciones de captura de datos modificados.
last_commit_cdc_time datetime Hora de procesamiento de la última entrada de registro de confirmación que contenía las transacciones de captura de los datos de cambio.

Cuando session_id = 0, hora de la última entrada de registro de confirmación para cualquier sesión que contenía las transacciones de captura de datos modificados.
latency int La diferencia, en segundos, entre end_time y last_commit_cdc_time en la sesión. Este contador se rellena al final de la fase 7.

Cuando session_id = 0, último valor de latencia distinto de cero registrado por una sesión.
empty_scan_count int Número de sesiones consecutivas que no contenían ninguna transacciones de captura de los datos de cambio.
failed_sessions_count int Número de sesiones erróneas.

Observaciones

La sys.dm_cdc_log_scan_sessions DMV contiene hasta 32 sesiones de examen y un agregado de todas las sesiones de examen con session_id= 0. Por lo tanto, en un momento dado, esta vista de administración dinámica puede contener un máximo de 33 filas.

Permisos

Se requiere el permiso VIEW DATABASE STATE para consultar la vista de administración dinámica sys.dm_cdc_log_scan_sessions. Para más información sobre las vistas de administración dinámica, consulte Funciones y vistas de administración dinámica (Transact-SQL).

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VIEW DATABASE PERFORMANCE STATE en la base de datos.

Ejemplos

El siguiente ejemplo devuelve información para la sesión más actual.

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  

Pasos siguientes