Solucionar problemas de ingestão do SQL Server

Esta página descreve problemas comuns com o conector do Microsoft SQL Server no Databricks Lakeflow Connect e como resolvê-los.

Solução de problemas gerais de canalização

As etapas de solução de problemas nesta seção se aplicam a todos os pipelines de ingestão no Lakeflow Connect.

Se um pipeline falhar durante a execução, clique na etapa que falhou e confirme se a mensagem de erro fornece informações suficientes sobre a natureza do erro.

Exibir logs de eventos de pipeline na interface do usuário

Você também pode verificar e baixar os logs do cluster na página de detalhes do pipeline clicando em Atualizar detalhes no painel direito e, em seguida, em Logs. Analise os logs em busca de erros ou exceções.

Visualizar detalhes de atualização do pipeline na interface de utilizador

Verificar se o CDC está habilitado para um banco de dados ou uma tabela

Para verificar se o CDC está habilitado para o banco de dados <database-name>:

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

Para verificar se o CDC está habilitado para a tabela <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>';

Verificar se o controlo de alterações está ativado para uma base de dados ou uma tabela

Para verificar se o controle de alterações está habilitado para o banco de dados\<database-name\>:

select ctdb.*

from sys.change_tracking_databases ctdb join sys.databases db

    on db.database_id  = ctdb.database_id

where db.name = '<MyDatabaseName>'

Para verificar se o controlo de alterações está ativado para a tabela <schema-name>.<table-name>:

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

Tempo limite de espera pelo token de mesa

O fluxo de ingestão pode ultrapassar o tempo limite enquanto aguarda que o gateway forneça as informações. Isto pode dever-se ao seguinte:

  • Você está executando uma versão mais antiga do gateway.
  • Houve um erro ao gerar as informações necessárias. Verifique se há erros nos logs do driver do gateway.

Observação

O fluxo completo de atualização reduz significativamente a ocorrência de erros de timeout durante operações completas de atualização. Ver comportamento completo de atualização (CDC).

Autenticação padrão: não é possível configurar credenciais padrão

Se você receber esse erro, há um problema com a descoberta das credenciais de usuário atuais. Tente substituir o seguinte:

w = WorkspaceClient()

Por:

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

Consulte Autenticação na documentação do Databricks SDK for Python.

tech.replicant.common.ExtractorException: com.microsoft.sqlserver.jdbc.SQLServerException: nome de coluna inválido 'SERIAL_NUMBER'.

Poderá receber este erro se estiver a utilizar uma versão mais antiga de uma tabela interna. Execute o seguinte no banco de dados conectado:

drop table dbo.replicate_io_audit_ddl_trigger_1;

PERMISSION_DENIED: Você não está autorizado a criar clusters. Contacte o seu administrador.

Entre em contato com um administrador de conta Databricks para conceder permissões Unrestricted cluster creation.

CÓDIGO DE ERRO DLT: ERRO INTERNO DO PORTAL DE INGESTÃO

Verifique os ficheiro(s) stdout nos registos do controlador.

Conflito de nomenclatura da tabela de origem

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.

Isso indica que há um conflito de nome devido a várias tabelas de origem nomeadas XYZ em esquemas de origem diferentes que estão a ser ingeridas pelo mesmo pipeline de ingestão num mesmo esquema de destino.

Crie múltiplos pares de gateway-pipeline, escrevendo essas tabelas conflitantes em diferentes esquemas de destino.

Alterações de esquema incompatíveis

Uma alteração de esquema incompatível faz com que o pipeline de ingestão falhe com um erro INCOMPATIBLE_SCHEMA_CHANGE. Para continuar a replicação, acione uma atualização completa das tabelas afetadas.

Observação

O Databricks não pode garantir que, no momento em que o pipeline de ingestão falhar devido a uma alteração de esquema incompatível, todas as linhas anteriores à alteração de esquema tenham sido ingeridas.

Erros de certificado do servidor TLS

Para resolução de erros de validação de certificados do servidor TLS, veja Solucionar erros de certificados TLS.