Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Debezium:Keine maximale LSN in der Datenbank verzeichnet; Bitte stellen Sie sicher, dass der SQL Server Agent ausgeführt wird

LSN sind die "Teile" von Informationen, die sich auf Ihre SQL Server-Änderungen beziehen. Wenn Sie kein LSN haben, ist es möglich, dass Ihr CDC nicht läuft oder nicht richtig konfiguriert ist. Debezium verbraucht LSNs zum Replizieren, also muss Ihr SQL Server diese generieren.

Einige Ansätze:

  1. Haben Sie überprüft, ob für Ihre Tabelle CDC aktiviert ist? Dadurch werden Ihre Tabellen mit aktiviertem CDC aufgelistet:
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. Ihre CDC-Datenbank ist aktiviert und läuft? (siehe hier )

Prüfen Sie, ob aktiviert :

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

Und prüfen Sie, ob ausgeführt wird:

EXECUTE sys.sp_cdc_enable_db;  
GO  
  1. Ihr CDC-Dienst wird auf SQL Server ausgeführt? Siehe in Dokumenten
EXEC sys.sp_cdc_start_job;  
GO  
  1. Beim Aktivieren der Tabelle in CDC hatte ich einige Probleme mit Rollenname. In meinem Fall konfigurieren Sie bei null mein Problem gelöst (mehr Details hier )
    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