Freigeben über


Der CDC-Aufnahmeauftrag schlägt fehl, wenn Änderungen für eine Tabelle mit dem System-CLR-Datentyp (Geometrie, Geografie oder Hierarchie-ID) verarbeitet werden.

In diesem Artikel können Sie das Problem umgehen, bei dem ein CDC-Aufnahmeauftrag fehlschlägt, wenn Sie Änderungen für eine Tabelle verarbeiten, die einen CLR-Datentyp (Geometrie, Geografie oder Hierarchie-ID) enthält.

Gilt für: SQL Server
Ursprüngliche KB-Nummer: 4538384

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Sie aktivieren das Feature "Datenerfassung ändern" (CDC) in einer Tabelle, die über den CLR-Datentyp des Systems verfügt, z. B. Geometrie, Geografie oder Hierarchie-ID.
  • Der CDC-Aufnahmeauftrag (Scan) verarbeitet Änderungen, die sich auf andere Tabellen beziehen. Der Prozess hat die Tabelle mit dem System-CLR-Datentyp noch nicht erreicht.
  • Sie nehmen einige Datenmanipulationssprache (Data Manipulation Language, DML) für die Tabelle mit dem System-CLR-Datentyp vor. Anschließend nehmen Sie Die Datendefinitionssprache (Data Definition Language, DDL) an derselben Tabelle vor (z. B. fügen Sie eine Spalte hinzu).

Wenn der CDC-Aufnahmeauftrag in diesem Szenario die Verarbeitung der Tabelle mit dem System-CLR-Datentyp startet, schlägt er fehl und gibt die folgende Fehlermeldung zurück:

Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start LineNumber ]
Fehler beim Protokollscanvorgang beim Erstellen eines replizierten Befehls aus der Protokollsequenznummer (LSN) {nn: n: nnn}. Sichern Sie die Veröffentlichungsdatenbank, und wenden Sie sich an Microsoft Support Services.
Msg 22859, Level 16, State 2, Procedure sp_replcmds, Line LineNumber [Batch Start LineNumber ]
Fehler im Protokollscanprozess beim Verarbeiten von Protokolldatensätzen. Identifizieren Sie die Ursache anhand vorheriger Fehlermeldungen in der aktuellen Sitzung, und beheben Sie etwaige damit verbundene Probleme.
Msg 3621, Level 16, State 6, Procedure sp_replcmds, Line LineNumber [Batch Start 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 Aufnahmeauftrag für die Datenbank "DatabaseName". Identifizieren Sie die Ursache des Fehlers anhand vorheriger Fehler.

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 Übergangsstadium. Wiederholen Sie die Abfrage, wenn die Datenbank verfügbar ist. Wenn Sie nicht glauben, dass dieser Fehler auf eine Datenbank zurückzuführen ist, die ihren Zustand überschreitet und dieser Fehler weiterhin auftritt.

Weitere Informationen

Dieses Problem tritt nicht auf, wenn der CDC-Aufnahmeauftrag zunächst 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 problematischer Datentypen (Geometrie, Geografie, Hierarchie-ID) zusammen mit CDC.

  • Stellen Sie sicher, dass keine DML-Änderungen im Hintergrund vorhanden sind, wenn Sie DDL-Änderungen an Tabellen vornehmen, die Geometrie, Geografie oder Hierarchie-ID-Datentypen aufweisen. Führen Sie die folgenden Schritte aus, um dieses Problem zu vermeiden:

    1. Löscht alle DML in der Tabelle.
    2. Führen Sie einen Aufnahmeauftrag aus, um die Änderungen zu verarbeiten.
    3. Führen Sie DDL für die Tabelle aus.
    4. Führen Sie einen Aufnahmeauftrag aus, um die DDL-Änderungen zu verarbeiten.
    5. Aktivieren Sie die DML-Verarbeitung erneut.

    Notiz

    Wenn dieses Problem weiterhin angezeigt wird, deaktivieren Sie cdC und aktivieren Sie es dann in der Tabelle erneut.