Der CDC-Erfassungsauftrag schlägt fehl, wenn Änderungen für eine Tabelle mit dem CLR-Systemdatentyp (geometry, geography oder hierarchyid) verarbeitet werden.
In diesem Artikel können Sie das Problem umgehen, bei dem ein CDC-Erfassungsauftrag fehlschlägt, wenn Sie Änderungen für eine Tabelle verarbeiten, die über einen CLR-Systemdatentyp (geometry, geography oder hierarchyid) verfügt.
Gilt für: SQL Server
Ursprüngliche KB-Nummer: 4538384
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
- Sie aktivieren das Feature Change Data Capture (CDC) für eine Tabelle, die über den CLR-Datentyp des Systems verfügt, z. B. geometry, geography oder hierarchyid.
- Der CDC-Erfassungsauftrag (Scan) verarbeitet Änderungen, die sich auf andere Tabellen beziehen. Der Prozess hat die Tabelle mit dem CLR-Systemdatentyp noch nicht erreicht.
- Sie nehmen einige Änderungen an der Datenbearbeitungssprache (Data Manipulation Language, DML) an der Tabelle vor, die über den CLR-Datentyp des Systems verfügt. Anschließend nehmen Sie DDL-Änderungen (Data Definition Language) an derselben Tabelle vor (z. B. fügen Sie eine Spalte hinzu).
In diesem Szenario schlägt der CDC-Erfassungsauftrag mit der Verarbeitung der Tabelle mit dem CLR-Systemdatentyp fehl und gibt die folgende Fehlermeldung zurück:
Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start Line LineNumber ]
Der Log-Scan Prozess konnte keinen replizierten Befehl aus der Protokollsequenznummer (LSN) {nnnnnnnnn: nnnnnnnn: nnnnnn} erstellen. Sichern Sie die Veröffentlichungsdatenbank, und wenden Sie sich an den Kundendienst.
Msg 22859, Level 16, State 2, Procedure sp_replcmds, Line LineNumber [Batch Start Line LineNumber ]
Fehler beim Protokollscanprozess bei der Verarbeitung von Protokolldatensätzen. Sehen Sie sich die vorherigen Fehler in der aktuellen Sitzung an, um die Ursache zu identifizieren und alle damit verbundenen Probleme zu beheben.
Msg 3621, Level 16, State 6, Procedure sp_replcmds, Line LineNumber [Batch Start Line LineNumber ]
Die Anweisung wurde beendet.
Msg 22864, Level 16, State 1, Procedure sp_MScdc_capture_job, Line LineNumber[Batch Start LineNumber ]
Fehler beim Aufruf von sp_MScdc_capture_job durch den Erfassungsauftrag für die Datenbank "DatabaseName". Sehen Sie sich vorherige Fehler nach der Ursache des Fehlers an.
Darüber hinaus kann der folgende Eintrag im Fehlerprotokoll protokolliert werden:
Fehler: 913, Schweregrad: 16, Status: 16. Datenbank-IDID konnte nicht gefunden werden. Die Datenbank ist möglicherweise noch nicht aktiviert oder befindet sich im Übergang. Führen Sie die Abfrage erneut aus, sobald die Datenbank verfügbar ist. Wenn Sie nicht der Meinung sind, dass dieser Fehler auf eine Datenbank zurückzuführen ist, die ihren Zustand übergibt, und dieser Fehler weiterhin auftritt.
Weitere Informationen
Dieses Problem tritt nicht auf, wenn der CDC-Erfassungsauftrag anfänglich nur die DML verarbeitet und dann die DDL-Änderung bei der nächsten Ausführung verarbeitet.
Problemumgehung
Um dieses Problem zu umgehen, probieren Sie eine der folgenden Methoden aus:
Vermeiden Sie die Verwendung der problematischen Datentypen (geometry, geography, hierarchyid) zusammen mit CDC.
Stellen Sie sicher, dass Sie keine DML-Inflight-Änderungen haben, wenn Sie DDL-Änderungen an Tabellen vornehmen, die über geometry-, geography- oder hierarchyid-Datentypen verfügen. Führen Sie die folgenden Schritte aus, um dieses Problem zu vermeiden:
- Alle DML für die Tabelle ausstellen.
- Führen Sie einen Erfassungsauftrag aus, um die Änderungen zu verarbeiten.
- Führen Sie DDL für die Tabelle aus.
- Führen Sie einen Erfassungsauftrag aus, um die DDL-Änderungen zu verarbeiten.
- Aktivieren Sie die DML-Verarbeitung erneut.
Hinweis
Wenn dieses Problem weiterhin besteht, deaktivieren Sie CDC für die Tabelle, und aktivieren Sie es dann erneut.