Captura de datos modificados: sys.dm_cdc_log_scan_sessions
Se aplica a: SQL Server Azure SQL Database Azure 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 AlwaysOn, no se devuelve ningún registro.
Para obtener 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. |
Comentarios
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 cualquier momento, 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