Änderungen der CDC Capture-Jobfehler- / CT-Tabellenspalte nach Anwendung von 2014 SP2 + CU4

7

Wir hatten ein Problem mit CDC, bei dem der Erfassungsjob fehlschlug und sich nicht selbst neu startete. Es war in einer DEV-Umgebung, also kein Schaden, aber hat jemand diese Fehler gesehen oder weiß, was genau mit CDC schief gelaufen ist?

SQL 2014 EE 12.0.5540 - 2 Node AG mit SSISDB

Geben Sie hier die Bildbeschreibung ein

In der Prozedur oder Funktion sp_batchinsert_1663605265 wurden zu viele Argumente angegeben. Weitere Informationen finden Sie in der dynamischen Verwaltungsansicht sys.dm_cdc_errors

Der Protokoll-Scan-Prozess konnte keinen replizierten Befehl aus der Protokollsequenznummer (LSN) {00002d0d: 0000f11f: 0002} erstellen. Sichern Sie die Publikationsdatenbank und wenden Sie sich an den Kundendienst. Für mehr Informationen

Der Protokollscanprozess ist bei der Verarbeitung von Protokolldatensätzen fehlgeschlagen. Beziehen Sie sich auf frühere Fehler in der aktuellen Sitzung, um die Ursache zu identifizieren und alle damit verbundenen Probleme zu beheben. Weitere Informationen finden Sie in der dynamischen Verwaltungsansicht sys.dm_cdc_errors

Wir haben versucht, den Erfassungsjob mit sp_cdc_drop_jobabd zu löschen und neu zu erstellen sp_cdc_add_job. Wir haben auch versucht, ein Failover auf den anderen Knoten sowie einen Neustart des Servers / Dienstes durchzuführen. Nichts schien CDC neu starten zu lassen.

Wir haben CU4 am Freitag durch AG Rolling Patching angewendet, damit wir auf dem neuesten und besten Stand sind. Dieses Problem trat direkt nach dem Patchen und dem Failover auf.

Ergebnis der Protokollabfrage hinzugefügt

Geben Sie hier die Bildbeschreibung ein

Kris Gruttemeyer
quelle
Kannst du die LSN lesen? Ich habe seltsame Dinge mit Protokollbeschädigung und / oder vorübergehenden (oder nicht so vorübergehenden) Festplattenproblemen gesehen. Grundsätzlich besteht der Fehler darin, dass die Daten von diesem lsn im Protokoll nicht richtig gelesen und abgerufen werden konnten.
Sean Gallardy - Rentner
@ SeanGallardy Ich werde das Systemteam dazu bringen, die Protokollsicherungen abzurufen, als wir das erste Auftreten sahen (direkt nach dem AG-Failover auf die neue gepatchte Sekundärseite). FWIW, wir befinden uns in einem kompetenten SAN, bei dem die Controller-Betriebssysteme vor zwei Wochenenden aktualisiert wurden. Wir haben einige Leseversuche gesehen, aber keine harten E / A-Fehler (823-825). Sie gaben an, dieses Problem letzte Woche gelöst zu haben. Ich möchte auf jeden Fall nachverfolgen und sehen, was genau passiert ist. Wenn es in DEV passieren kann, kann es in PROD passieren.
Kris Gruttemeyer
@ SeanGallardy Ich glaube, das hinzugefügte Bild ist das, wonach wir suchen. Stimmt dies mit dem überein, was Sie zuvor gesehen haben?
Kris Gruttemeyer
Wie hoch ist die Kompatibilitätsstufe der Datenbank, bei der das Problem auftritt?
Kin Shah
120, es war schon immer so, dass dies ein neuer Build war, also nicht aus einer früheren Version oder so.
Kris Gruttemeyer

Antworten:

6

Es sieht so aus, als ob CU2 + SP4 (12.0.5540) die Struktur der zugrunde liegenden _CT-Systemtabellen ändert, die generiert werden. Es fügt die Spalte hinzu [__$command_id] int null.

Wenn Sie ein Upgrade auf die neue CU durchführen, schlagen die Erfassungsjobs fehl oder gehen mit den folgenden Fehlern zu "Zwischen Wiederholungsversuchen ...":

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Das Löschen und Neuerstellen des Erfassungsjobs funktioniert nicht (mit cdc_add_job). Ich musste den CDC-Job des Erfassungsagenten löschen, CDC (sp_cdc_disable_table) in der Tabelle deaktivieren und dann CDC (sp_cdc_enable_table) erneut aktivieren, wodurch der Job erneut hinzugefügt und der Job erfolgreich ausgelöst und mit dem Sammeln begonnen wurde.

Das Problem ist, dass Sie beim Löschen und erneuten Aktivieren von CDC die zuvor vorhandene _CT-Tabelle und alle ihre Daten verlieren.

Die einzigen Informationen, die ich über CU4 gefunden habe, die CDC ändern, sind die folgenden von MS: https://support.microsoft.com/en-us/help/3030352

Es heißt, dass sie das Bestellproblem behoben haben, aber keine strukturellen Änderungen an den CDC-Systemtabellen auflisten.

UPDATE 1 : Ich habe einen kostenpflichtigen Support-Fall mit MS zu diesem Problem eröffnet. Es ist auch ein Verbindungselement dafür geöffnet: https://connect.microsoft.com/SQLServer/Feedback/Details/3130381

UPDATE 2 : sp_vupgrade_replicationGemäß MS kann der Capture Agent-Job nach Verwendung des Befehls nach dem Patchen auf CU4 erfolgreich gestartet werden. Es behandelt immer noch nicht die fehlgeschlagenen Jobs, bevor der Befehl ausgeführt wird. Es wird auch nicht darauf eingegangen, dass diese hinzugefügte Spalte nirgendwo dokumentiert wird. Ich warte immer noch darauf, was das endgültige Urteil ist.

UPDATE 3 : MS hat offiziell in ihrem Blog gepostet und dies als Problem erkannt: https://blogs.msdn.microsoft.com/sql_server_team/cdc-functionality-may-break-after-upgrade-to-the-latest-cu -für-SQL-Server-2012-2014-und-2016 /

Noch kein Wort darüber, ob der CU4-Patch erneut veröffentlicht wird, damit keine manuellen Eingriffe erforderlich sind, um die CDC-Jobs neu zu starten oder den Spaltenwechsel offiziell zu dokumentieren.

Kris Gruttemeyer
quelle
Ich weiß, dass dies jetzt ein alter (ish) Thread ist, aber wir haben hier immer noch Probleme. Ein Upgrade auf SSDT2017 behebt das Problem, aber das können wir derzeit nicht einfach tun. MS behauptet, dass es in 2016 SP1CU5, 2014 SP2CU7 und 2012 SP4 ( support.microsoft.com/en-gb/help/4053693 ) behoben wurde, aber nachdem ich das Update auf einen Testserver angewendet habe, erhalte ich immer noch den ungültigen Spaltennamen __ $ command_id '. Kämpfst du immer noch damit?
Simon Hellings
Wir haben unsere Pakete geändert, um die neue Spalte zu berücksichtigen. Das oben von MS aufgeführte Update behebt das Problem, dass CDC-Jobs nach dem Patchen nicht wieder angezeigt werden. Die zusätzliche Spalte wird in Zukunft Teil von CDC sein, sodass Sie entweder dort bleiben müssen, wo Sie sind, oder die zusätzliche Spalte in Ihren Paketen berücksichtigen müssen.
Kris Gruttemeyer
Danke Kris; superschnelle Antwort ... OK - jetzt zur wirklich dummen Frage ... Wie kann ich meine Pakete ändern, um damit umzugehen? Ich habe gerade die Felder ausgefüllt und auf Vorschau geklickt? Wenn die Spalte nicht zugeordnet wurde, wurde der Fehler weiterhin verursacht.
Simon Hellings
Ich vermute, Sie müssen entweder die Spalte zu Ihrer CDC-Quelle im Paket hinzufügen und sie entweder durchtragen oder nichts zuordnen.
Kris Gruttemeyer