Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Debezium:Nenhum LSN máximo registrado no banco de dados; verifique se o SQL Server Agent está em execução


LSN são as "partes" de informações relacionadas às alterações do SQL Server. Se você não tem LSN, é possível que seu CDC não esteja rodando ou não esteja configurado corretamente. O Debezium consome LSNs para replicar, portanto, seu SQL Server precisa gerar isso.

Algumas abordagens:
  1. Você verificou se sua tabela está com o CDC ativado? Isso listará suas tabelas com CDC ativado:
SELECT s.name AS Schema_Name, tb.name AS Table_Name
, tb.object_id, tb.type, tb.type_desc, tb.is_tracked_by_cdc
FROM sys.tables tb
INNER JOIN sys.schemas s on s.schema_id = tb.schema_id
WHERE tb.is_tracked_by_cdc = 1
  1. Seu banco de dados CDC está habilitado e em execução? (consulte aqui )

Verifique se ativado :
SELECT * 
FROM sys.change_tracking_databases 
WHERE database_id=DB_ID('MyDatabase')

E verifique se está rodando:
EXECUTE sys.sp_cdc_enable_db;  
GO  
  1. Seu serviço CDC está sendo executado no SQL Server? Consulte em documentos
EXEC sys.sp_cdc_start_job;  
GO  
  1. Ao ativar a tabela no CDC, tive alguns problemas com o nome da função. Para o meu caso, configurando em null resolvi meu problema (mais detalhes aqui )
    EXEC sys.sp_cdc_enable_table
        @source_schema=N'dbo',
        @source_name=N'AD6010',
        @capture_instance=N'ZZZZ_AD6010',
        @role_name = NULL,
        @filegroup_name=N'CDC_DATA',
        @supports_net_changes=1
     GO