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:
- 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
- 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
- Il tuo servizio CDC è in esecuzione su SQL Server? Vedere in documenti
EXEC sys.sp_cdc_start_job;
GO
- 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