Delen via


CdC-opnametaak mislukt bij het verwerken van wijzigingen voor een tabel met systeem-CLR-gegevenstype (geometrie, geografie of hiërarchie-id)

Dit artikel helpt u bij het oplossen van het probleem waarbij een CDC-opnametaak mislukt wanneer u wijzigingen verwerkt voor een tabel met een systeem-CLR-gegevenstype (geometrie, geografie of hiërarchie-id).

Van toepassing op: SQL Server
Oorspronkelijk KB-nummer: 4538384

Symptomen

Bekijk het volgende scenario:

  • U schakelt de functie Change Data Capture (CDC) in voor een tabel met een systeem-CLR-gegevenstype, zoals geometrie, geografie of hiërarchie-id.
  • De CDC-opnametaak (scan) verwerkt wijzigingen die zijn gerelateerd aan andere tabellen. Het proces heeft nog niet de tabel bereikt met het gegevenstype CLR van het systeem.
  • U kunt enkele DML-wijzigingen (Data Manipulation Language) aanbrengen in de tabel met een systeem-CLR-gegevenstype. Vervolgens wijzigt u DDL (Data Definition Language) in dezelfde tabel (u voegt bijvoorbeeld een kolom toe).

Wanneer in dit scenario de CDC-opnametaak wordt gestart met het verwerken van de tabel met het gegevenstype CLR van het systeem, mislukt dit en wordt het volgende foutbericht geretourneerd:

Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start LineNumber ]
Het logboekscanproces kan geen gerepliceerde opdracht maken op basis van het logboekreeksnummer (LSN) {nnnn: nnnnnnn: nnnn: nnnnn}. Maak een back-up van de publicatiedatabase en neem contact op met de klantenservice.
Msg 22859, Niveau 16, Status 2, Procedure sp_replcmds, Regelnummer [Batch LineNumber ]
Logboekscanproces is mislukt bij het verwerken van logboekrecords. Raadpleeg eerdere fouten in de huidige sessie om de oorzaak te identificeren en eventuele bijbehorende problemen op te lossen.
Msg 3621, Niveau 16, State 6, Procedure sp_replcmds, Regelnummer [Lijnnummer batch starten ]
De instructie is beëindigd.
Msg 22864, Niveau 16, Staat 1, Procedure sp_MScdc_capture_job, Regelnummer[Lijnnummer batch starten]
De aanroep van sp_MScdc_capture_job door de Capture-taak voor database DatabaseName is mislukt. Bekijk eerdere fouten voor de oorzaak van de fout.

Daarnaast kan de volgende vermelding worden vastgelegd in het foutenlogboek:

Fout: 913, Ernst: 16, Status: 16. Kan de id-id van de database niet vinden. De database is mogelijk nog niet geactiveerd of is mogelijk in overgang. De query opnieuw uitvoeren zodra de database beschikbaar is. Als u niet denkt dat deze fout wordt veroorzaakt door een database die de status ervan overzet en deze fout zich blijft voordoen.

Meer informatie

Dit probleem treedt niet op als de CDC-opnametaak in eerste instantie alleen de DML verwerkt en vervolgens de DDL-wijziging verwerkt tijdens de volgende uitvoering.

Tijdelijke oplossing

Probeer een van de volgende methoden om dit probleem te omzeilen:

  • Vermijd het gebruik van problematische gegevenstypen (geometrie, geografie, hiërarchieid) samen met CDC.

  • Zorg ervoor dat u geen DML-wijzigingen in de vlucht hebt wanneer u DDL-wijzigingen aanbrengt in tabellen met geometrie-, geografie- of hiërarchiegegevenstypen. Volg deze stappen om dit probleem te voorkomen:

    1. Alle DML aan de tafel stilmaken.
    2. Voer een capture-taak uit om de wijzigingen te verwerken.
    3. Voer DDL uit voor de tabel.
    4. Voer een capture-taak uit om de DDL-wijzigingen te verwerken.
    5. DML-verwerking opnieuw inschakelen.

    Notitie

    Als u dit probleem blijft ondervinden, schakelt u CDC uit en schakelt u deze vervolgens opnieuw in op de tabel.