Aller au contenu principal

Dépanner l'ingestion de SQL Server

Cette page décrit les problèmes courants liés au connecteur Microsoft SQL Server dans Databricks Lakeflow Connect et la manière de les résoudre.

Pour des conseils généraux de dépannage qui s’appliquent à tous les pipelines d’ingestion gérés, consultez Dépanner les pipelines d’ingestion gérés.

Vérifier si la CDC est activée pour une base de données ou une table

Pour vérifier si la CDC est activée pour la base de données <database-name>:

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

Pour vérifier si la CDC est activée pour la table <schema-name>.<table-name>:

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>';

Vérifier si le suivi des modifications est activé pour une base de données ou une table

Pour vérifier si le suivi des modifications est activé pour la base de données\<database-name\>:

SQL
select ctdb.*

from sys.change_tracking_databases ctdb join sys.databases db

on db.database_id = ctdb.database_id

where db.name = '<MyDatabaseName>'

Pour vérifier si le suivi des modifications est activé pour la table <schema-name>.<table-name>:

SQL
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>'

Expiration du délai d'attente du jeton de table

Le pipeline d’ingestion pourrait expirer en attendant que l’information soit fournie par la passerelle. Cela peut être dû à :

  • Vous exécutez une version antérieure de la passerelle.
  • Une erreur s'est produite lors de la génération des informations nécessaires. Vérifiez les logs du driver de passerelle pour les erreurs.
remarque

Le flux de refresh complète réduit significativement l'occurrence des erreurs de délai d'attente lors des opérations de refresh complète. Voir Full refresh behavior (CDC).

Authentification default : impossible de configurer les identifiants par défaut

Si vous recevez cette erreur, un problème est survenu lors de la découverte des identifiants de l'utilisateur actuel. Tentez de remplacer les éléments suivants :

w = WorkspaceClient()

Avec :

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

Consultez Authentification dans la documentation du Databricks SDK pour Python.

tech.replicant.common.ExtractorException: com.microsoft.sqlserver.jdbc.SQLServerException: Nom de colonne non valide 'SERIAL_NUMBER'.

Vous pourriez recevoir cette erreur si vous utilisez une version plus ancienne d'une table interne. Exécutez les opérations suivantes sur la base de données connectée :

SQL
drop table dbo.replicate_io_audit_ddl_trigger_1;

PERMISSION_DENIED : vous n'êtes pas autorisé à créer des clusters. Veuillez contacter votre administrateur.

Contactez un administrateur de compte Databricks pour qu'il vous accorde les autorisations Unrestricted cluster creation.

CODE D'ERREUR DLT : INGESTION_GATEWAY_INTERNAL_ERROR

Vérifiez le ou les fichier(s) stdout dans les Logs Driver.

Conflit de noms de tables sources

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.

Cela indique qu'il y a un conflit de noms en raison de plusieurs tables source nommées XYZ dans différents schémas source qui sont ingérées par le même pipeline d'ingestion vers le même schéma de destination.

Créez plusieurs paires passerelle-pipeline qui écrivent ces tables en conflit dans des schémas de destination différents.

Changements de schéma incompatibles

Une modification de schéma incompatible entraîne l'échec du pipeline d'ingestion avec une erreur INCOMPATIBLE_SCHEMA_CHANGE. Pour poursuivre la réplication, Trigger une refresh complète des tables affectées.

remarque

Databricks ne peut pas garantir qu'au moment où le pipeline d'ingestion échoue pour un changement de schéma incompatible, toutes les lignes antérieures au changement de schéma ont été ingérées.

CHANGEMENT_DE_SCHÉMA_NON_INCRÉMENTIEL

NON_INCREMENTAL_SCHEMA_CHANGE: Column '<column>' was added to table '<table>'. A full refresh is required to continue incremental ingestion.

Cette erreur se produit lorsqu'une nouvelle colonne est ajoutée à une table source pendant que l'ingestion incrémentale est active. Le connecteur ne peut pas renseigner les valeurs de la nouvelle colonne à partir des données de modification historiques, un refresh complet est donc nécessaire.

Exécutez une refresh complète de la table affectée pour reprendre l'ingestion. Voir refresh complète des tables cibles.

MISSING_TABLE_IN_SOURCE

MISSING_TABLE_IN_SOURCE: Table '<schema>.<table>' could not be found in the source database.

Cette erreur se produit lorsqu'une table, qui était auparavant disponible dans la base de données source, ne peut plus être trouvée. Les causes courantes incluent :

  • La table a été renommée ou supprimée dans la source.
  • La table est temporairement indisponible, par exemple lors d'une fenêtre de maintenance.

Pour résoudre :

  • Si la table est temporairement indisponible, attendez que la maintenance soit terminée, puis relancez le pipeline.
  • Si la table a été renommée ou recréée, exécutez un refresh complet de la table affectée.
  • Si la table a été supprimée intentionnellement, supprimez-la du pipeline.

Erreurs de certificat de serveur TLS

Pour résoudre les problèmes d'erreurs de validation du certificat de serveur TLS, consultez Dépanner les erreurs de certificat TLS.