Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Debezium:Nessun LSN massimo registrato nel database; assicurarsi che SQL Server Agent sia in esecuzione

LSN è le "parti" di informazioni relative alle modifiche di SQL Server. Se non si dispone di LSN, è possibile che il CDC non sia in esecuzione o non sia configurato correttamente. Debezium utilizza LSN per la replica, quindi il tuo SQL Server deve generarlo.

Alcuni approcci:

  1. Hai verificato se il tuo tavolo è con CDC abilitato? Questo elencherà le tue tabelle con CDC abilitato:
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. Il tuo database CDC è abilitato e funzionante? (vedi qui )

Verifica se abilitato :

SELECT * 
FROM sys.change_tracking_databases 
WHERE database_id=DB_ID('MyDatabase')

E controlla se è in esecuzione:

EXECUTE sys.sp_cdc_enable_db;  
GO  
  1. Il tuo servizio CDC è in esecuzione su SQL Server? Vedere in documenti
EXEC sys.sp_cdc_start_job;  
GO  
  1. Durante l'abilitazione della tabella in CDC, ho riscontrato alcuni problemi con il nome del ruolo. Nel mio caso, la configurazione su null risolto il mio problema (maggiori dettagli qui )
    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