Captura de Dados de Alterações - sys.dm_cdc_log_scan_sessions

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed Instancebase de dados SQL em Microsoft Fabric

Devolve uma linha para cada sessão de análise de registo na base de dados atual. A última linha devolvida representa a sessão atual. Pode usar esta vista para devolver informações de estado sobre a sessão atual de varrimento do log, ou informações agregadas sobre todas as sessões desde que a instância do SQL Server foi iniciada pela última vez.

Os registos são sys.dm_cdc_log_scan_sessions reiniciados sempre que a instância do SQL Server é reiniciada ou após ocorrer um failover. Além disso, se a base de dados consultada estiver no papel secundário de um grupo de disponibilidade Always On, então não são devolvidos registos.

Para mais informações, consulte O que é a captura de dados de alterações (CDC)?

Nome da coluna Tipo de dados Descrição
session_id int ID da sessão.

0 = os dados devolvidos nesta linha são um agregado de todas as sessões desde que a instância do SQL Server foi iniciada pela última vez.
start_time datetime Hora em que a sessão começou.

Quando session_id = 0, começava a recolha de dados agregados no tempo.
end_time datetime Hora em que a sessão terminou.

NULL = sessão está ativa.

Quando session_id = 0, a hora em que a última sessão terminou.
Duração int A duração (em segundos) da sessão.

0 = a sessão não contém transações de captura de dados de alteração.

Quando session_id = 0, a soma da duração (em segundos) de todas as sessões com transações de captura de dados alterados.
scan_phase Nvarchar(200) A fase atual da sessão. Seguem-se os valores possíveis e as suas descrições:

1: Configuração de leitura
2: Primeira varredura, construção da tabela de hash
3: Segunda varredura
4: Segunda varredura
5: Segunda varredura
6: Versionamento do esquema
7: Última varredura
8: Feito

Quando session_id = 0, este valor é sempre "Agregado".
error_count int Número de erros encontrados.

Quando session_id = 0, o número total de erros em todas as sessões.
start_lsn nvarchar(23) A iniciar LSN para a sessão.

Quando session_id = 0, o LSN inicial da última sessão.
current_lsn nvarchar(23) LSN atual a ser digitalizado.

Quando session_id = 0, o LSN atual é 0.
end_lsn nvarchar(23) Fim do LSN para a sessão.

NULL = sessão está ativa.

Quando session_id = 0, o LSN final da última sessão.
tran_count bigint Número de transações de captura de dados de alteração processadas. Este contador é preenchido na fase 2.

Quando session_id = 0, o número de transações processadas em todas as sessões.
last_commit_lsn nvarchar(23) LSN do último registo de registo de commit processado.

Quando session_id = 0, o último registo log de commit LSN para qualquer sessão.
last_commit_time datetime Hora em que o último registo de registo de commit foi processado.

Quando session_id = 0, é o tempo do último registo log de commit para qualquer sessão.
log_record_count bigint Número de registos de registo digitalizados.

Quando session_id = 0, número de registos digitalizados em todas as sessões.
schema_change_count int Número de operações de linguagem de definição de dados (DDL) detetadas. Este contador é povoado na fase 6.

Quando session_id = 0, o número de operações DDL processadas em todas as sessões.
command_count bigint Número de comandos processados.

Quando session_id = 0, o número de comandos processados em todas as sessões.
first_begin_cdc_lsn nvarchar(23) Primeiro LSN que continha transações de captura de dados de alteração.

Quando session_id = 0, o primeiro LSN que continha transações de captura de dados altera.
last_commit_cdc_lsn nvarchar(23) LSN do último registo de registo de commit que continha transações de captura de dados de alteração.

Quando session_id = 0, o último registo de registo de commit LSN para qualquer sessão que contenha transações de captura de dados de alteração
last_commit_cdc_time datetime O momento em que o último registo de registo de commit foi processado que continha transações de captura de dados de alteração.

Quando session_id = 0, o momento em que o último registo de registo de commit para qualquer sessão contenha transações de captura de dados de alteração.
Latência int A diferença, em segundos, entre end_time e last_commit_cdc_time durante a sessão. Este contador é ocupado no final da fase 7.

Quando session_id = 0, o último valor de latência não nula registado por uma sessão.
empty_scan_count int Número de sessões consecutivas que não contiveram transações de captura de dados alteradas.
failed_sessions_count int Número de sessões que falharam.

Observações

O sys.dm_cdc_log_scan_sessions DMV contém até 32 sessões de digitalização e um agregado de todas as sessões de digitalização com session_id= 0. Assim, em qualquer momento, esta vista de gestão dinâmica pode conter um máximo de 33 linhas.

Permissions

Requer VIEWDATABASE permissão STATE para consultar a sys.dm_cdc_log_scan_sessions vista de gestão dinâmica. Para mais informações sobre permissões em vistas de gestão dinâmica, consulte Vistas e Funções de Gestão Dinâmica (Transact-SQL).

Permissões para SQL Server 2022 e posterior

Requer VIEWDATABASE permissão de ESTADO DE DESEMPENHO na base de dados.

Examples

O exemplo seguinte retorna informação para a sessão mais 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  

Passos seguintes