Freigeben über


Probleme bei der Datenintegration von SQL Server beheben

Diese Seite beschreibt häufige Probleme mit dem Microsoft SQL Server-Connector in Databricks Lakeflow Connect und wie sie behoben werden.

Allgemeine Pipeline-Problembehandlung

Die Schritte zur Problembehandlung in diesem Abschnitt gelten für alle Aufnahmepipelines in Lakeflow Connect.

Wenn eine Pipeline beim Ausführen fehlschlägt, klicken Sie auf den Fehlgeschlagenen Schritt, und bestätigen Sie, ob die Fehlermeldung ausreichende Informationen zur Art des Fehlers bereitstellt.

Anzeigen von Pipelineereignisprotokollen in der Benutzeroberfläche

Sie können die Clusterprotokolle auch auf der Seite mit den Pipelinedetails überprüfen und herunterladen, indem Sie im rechten Bereich auf "Details aktualisieren" und dann auf "Protokolle" klicken. Überprüfen Sie die Protokolle auf Fehler oder Ausnahmen.

Details zu Pipeline-Updates in der Benutzeroberfläche anzeigen

Überprüfen, ob CDC für eine Datenbank oder eine Tabelle aktiviert ist

So überprüfen Sie, ob CDC für die Datenbank <database-name>aktiviert ist:

select is_cdc_enabled from sys.databases where name='<database-name>';

So überprüfen Sie, ob CDC für die Tabelle <schema-name>.<table-name>aktiviert ist:

select t.is_tracked_by_cdc
from sys.tables t join sys.schemas s on t.schema_id = s.schema_id
where s.name='<schema-name>' and t.name='<table-name>';

Überprüfen, ob die Änderungsnachverfolgung für eine Datenbank oder eine Tabelle aktiviert ist

So überprüfen Sie, ob die Änderungsnachverfolgung für die Datenbank\<database-name\> aktiviert ist:

select ctdb.*

from sys.change_tracking_databases ctdb join sys.databases db

    on db.database_id  = ctdb.database_id

where db.name = '<MyDatabaseName>'

So überprüfen Sie, ob die Änderungsnachverfolgung für die Tabelle <schema-name>.<table-name>aktiviert ist:

select s.name schema_name, t.name table_name, ct.*

from sys.change_tracking_tables ct join sys.tables t

    on ct.object_id = t.object_id

    join sys.schemas s on t.schema_id = s.schema_id

where s.name = '<MySchemaName>' and t.name = '<MyTableName>'

Timeout beim Warten auf Tabellen-Token

Die Aufnahmepipeline kann eine Zeitüberschreitung erfahren, während sie darauf wartet, dass Informationen vom Gateway bereitgestellt werden. Dies kann darauf zurückzuführen sein:

  • Sie führen eine ältere Version des Gateways aus.
  • Fehler beim Generieren der erforderlichen Informationen. Überprüfen Sie die Gatewaytreiberprotokolle auf Fehler.

Hinweis

Der vollständige Aktualisierungsfluss reduziert das Auftreten von Timeoutfehlern während vollständiger Aktualisierungsvorgänge erheblich. Siehe vollständiges aktualisierungsverhalten (CDC).

Standardauthentifizierung: Standardanmeldeinformationen können nicht konfiguriert werden

Wenn Diese Fehlermeldung angezeigt wird, liegt ein Problem beim Ermitteln der aktuellen Benutzeranmeldeinformationen vor. Versuchen Sie, Folgendes zu ersetzen:

w = WorkspaceClient()

Durch:

w = WorkspaceClient(host=input('Databricks Workspace URL: '), token=input('Token: '))

Siehe Authentifizierung im Databricks SDK für Python-Dokumentation.

tech.replicant.common.ExtractorException: com.microsoft.sqlserver.jdbc.SQLServerException: Ungültiger Spaltenname 'SERIAL_NUMBER'.

Diese Fehlermeldung wird möglicherweise angezeigt, wenn Sie eine ältere Version einer internen Tabelle verwenden. Führen Sie folgendes in der verbundenen Datenbank aus:

drop table dbo.replicate_io_audit_ddl_trigger_1;

PERMISSION_DENIED: Sie sind nicht berechtigt, Cluster zu erstellen. Wenden Sie sich an Ihren Administrator.

Wenden Sie sich an einen Databricks-Kontoadministrator, um Ihnen Unrestricted cluster creation Berechtigungen zu gewähren.

DLT-FEHLERCODE: INGESTION_GATEWAY_INTERNER_FEHLER

Überprüfen Sie die stdout Dateien in den Treiberprotokollen.

Konflikt bei der Benennung der Quelltabelle

Ingestion pipeline error: “org.apache.spark.sql.catalyst.ExtendedAnalysisException: Cannot have multiple queries named `XYZ_snapshot_load` for `XYZ`. Additional queries on that table must be named. Note that unnamed queries default to the same name as the table.

Dies deutet darauf hin, dass ein Namenskonflikt aufgrund mehrerer Quelltabellen besteht, die in verschiedenen Quellschemas XYZ benannt sind und von derselben Aufnahmepipeline in dasselbe Zielschema übernommen werden.

Erstellen Sie mehrere Gateway-Pipeline-Paare, die diese konfliktbehafteten Tabellen in verschiedene Zielschemen schreiben.

Inkompatible Schemaänderungen

Eine inkompatible Schemaänderung führt dazu, dass die Aufnahmepipeline mit einem INCOMPATIBLE_SCHEMA_CHANGE Fehler fehlschlägt. Um die Replikation fortzusetzen, lösen Sie eine vollständige Aktualisierung der betroffenen Tabellen aus.

Hinweis

Databricks kann nicht garantieren, dass zum Zeitpunkt, an dem die Aufnahmepipeline aufgrund einer inkompatiblen Schemaänderung fehlschlägt, alle Zeilen vor der Schemaänderung bereits aufgenommen wurden.