CDC-avbildningsjobb misslyckas när ändringar bearbetas för en tabell med system-CLR-datatyp (geometri, geografi eller hierarkiid)
Den här artikeln hjälper dig att kringgå problemet där ett CDC-avbildningsjobb misslyckas när du bearbetar ändringar för en tabell som har en CLR-systemdatatyp (geometri, geografi eller hierarkiid).
Gäller för: SQL Server
Ursprungligt KB-nummer: 4538384
Symptom
Föreställ dig följande scenario:
- Du aktiverar funktionen Change Data Capture (CDC) i en tabell som har system-CLR-datatyp, till exempel geometri, geografi eller hierarkiid.
- CDC-avbildningsjobbet (genomsökning) bearbetar ändringar som är relaterade till andra tabeller. Processen har ännu inte nått den tabell som har system-CLR-datatypen.
- Du gör vissa ändringar i datamanipuleringsspråket (DML) i tabellen med system-CLR-datatypen. Sedan gör du DDL-ändringar (Data Definition Language) i samma tabell (till exempel lägger du till en kolumn).
I det här scenariot, när CDC-avbildningsjobbet börjar bearbeta tabellen med systemets CLR-datatyp, misslyckas det och returnerar följande felmeddelande:
Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start Line LineNumber ]
Logggenomsökningsprocessen kunde inte konstruera ett replikerat kommando från loggsekvensnummer (LSN) {nnnnnnnn: nnnnnnnn: nnnn}. Säkerhetskopiera publikationsdatabasen och kontakta kundsupporten.
Msg 22859, Nivå 16, Delstat 2, Procedure sp_replcmds, Line LineNumber [Batch Start Line LineNumber ]
Logggenomsökningsprocessen misslyckades vid bearbetning av loggposter. Se tidigare fel i den aktuella sessionen för att identifiera orsaken och korrigera eventuella associerade problem.
Msg 3621, Level 16, State 6, Procedure sp_replcmds, Line LineNumber [Batch Start Line LineNumber ]
Instruktionen har avslutats.
Msg 22864, Level 16, State 1, Procedure sp_MScdc_capture_job, Line LineNumber[Batch Start Line LineNumber ]
Anropet till sp_MScdc_capture_job av insamlingsjobbet för databasen DatabaseName misslyckades. Titta på tidigare fel för orsaken till felet.
Dessutom kan följande post loggas i felloggen:
Fel: 913, Allvarlighetsgrad: 16, Tillstånd: 16. Det gick inte att hitta databas-IDID. Databasen kanske inte har aktiverats ännu eller så är den i övergång. Skicka frågan igen när databasen är tillgänglig. Om du inte tror att det här felet beror på en databas som övergår sitt tillstånd och det här felet fortsätter att inträffa.
Mer information
Det här problemet uppstår inte om CDC-avbildningsjobbet först endast bearbetar DML och sedan bearbetar DDL-ändringen vid nästa körning.
Lösning
Du kan undvika det här problemet genom att prova någon av följande metoder:
Undvik att använda problematiska datatyper (geometri, geografi, hierarkiid) tillsammans med CDC.
Kontrollera att du inte har några inflight DML-ändringar när du gör DDL-ändringar i tabeller som har geometri, geografi eller hierarkiiddatatyper. Undvik det här problemet genom att följa dessa steg:
- Quiesce all DML till tabellen.
- Kör ett avbildningsjobb för att bearbeta ändringarna.
- Kör DDL för tabellen.
- Kör ett avbildningsjobb för att bearbeta DDL-ändringarna.
- Återaktivera DML-bearbetning.
Kommentar
Om problemet kvarstår inaktiverar du och återaktiverar CDC i tabellen.