Partilhar via


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

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no 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 Description
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 permissão VIEW DATABASE 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 a permissão VIEW DATABASE PERFORMANCE STATE no banco 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  

Próximos passos