Resolver o problema dos conectores Azure Synapse Analytics, Azure SQL Database, SQL Server, Azure SQL Managed Instance e Amazon RDS para SQL Server em Azure Data Factory e Azure Synapse

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Data Factory em Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA incorporada e novas funcionalidades. Se és novo na integração de dados, começa pelo Fabric Data Factory. As cargas de trabalho existentes do ADF podem atualizar para o Fabric para aceder a novas capacidades em ciência de dados, análise em tempo real e relatórios.

Este artigo fornece sugestões para resolver problemas comuns com os conectores Azure Synapse Analytics, Azure SQL Database, SQL Server, Azure SQL Managed Instance e Amazon RDS for SQL Server em Azure Data Factory e Azure Synapse.

Código de erro: SqlFailedToConnect

  • Mensagem: Cannot connect to SQL Database: '%server;', Database: '%database;', User: '%user;'. Check the linked service configuration is correct, and make sure the SQL Database firewall allows the integration runtime to access.

  • Causas e recomendações: Diferentes causas podem levar a este erro. Verifique a lista a seguir para análise de possíveis causas e recomendações relacionadas.

    Análise de causa Recomendação
    Para Azure SQL, se a mensagem de erro contiver a cadeia "SqlErrorNumber=47073", significa que o acesso à rede pública é negado na configuração de conectividade. No firewall Azure SQL, defina a opção Negar acesso à rede pública para No. Para mais informações, consulte Azure SQL definições de conectividade.
    Para Azure SQL, se a mensagem de erro contiver um código de erro SQL como "SqlErrorNumber=[códigode de erro]", consulte o guia de resolução de problemas do Azure SQL. Para uma recomendação, consulte Resolução de problemas de conectividade e outros erros com o Azure SQL Database e o Azure SQL Managed Instance.
    Verifique se a porta 1433 está na lista de permissões do firewall. Para mais informações, consulte Ports used by SQL Server.
    Se a mensagem de erro contiver a cadeia de caracteres "SqlException", o erro do Banco de dados SQL indica que alguma operação específica falhou. Para obter mais informações, pesquise por código de erro SQL em Erros do mecanismo de banco de dados. Para mais ajuda, contacte o suporte Azure SQL.
    Se este for um problema transitório (por exemplo, uma conexão de rede instável), adicione nova tentativa na política de atividade para atenuar. Para obter mais informações, consulte Pipelines e atividades.
    Se a mensagem de erro contiver a cadeia "Client with IP address '... ' não é permitido aceder ao servidor", e estás a tentar ligar-te ao Azure SQL Database, o erro é normalmente causado por um problema de firewall do Azure SQL Database. Na configuração do firewall do Azure SQL Server, ative a opção Permitir que serviços e recursos do Azure acedam a este servidor. Para mais informações, consulte Azure SQL Database e Azure Synapse regras de firewall IP.
    Se a mensagem de erro contiver Login failed for user '<token-identified principal>', esse erro geralmente é causado por não conceder permissão suficiente para sua entidade de serviço ou identidade gerenciada atribuída pelo sistema ou identidade gerenciada atribuída pelo usuário (depende do tipo de autenticação escolhido) em seu banco de dados. Conceda permissões suficientes ao seu principal de serviço ou à identidade gerida atribuída pelo sistema ou à identidade gerida atribuída pelo utilizador no seu banco de dados.

    Para Azure SQL Database:
        - Se você usar a autenticação da entidade de serviço, siga a autenticação da entidade de serviço.
        - Se utilizar a autenticação de identidade gerida atribuída pelo sistema, siga Autenticação de identidade gerida atribuída pelo sistema.
        - Se utilizar a autenticação de identidade gerida atribuída ao utilizador, siga Autenticação de Identidade Gerida Atribuída ao Utilizador.
       
    Para Azure Synapse Analytics:
        - Se você usar a autenticação da entidade de serviço, siga a autenticação da entidade de serviço.
        - Se utilizar autenticação de identidade gerida atribuída pelo sistema, siga Identidades geridas atribuídas pelo sistema para autenticação de Azure recursos.
        - Se utilizar a autenticação de identidade gerida atribuída ao utilizador, siga Autenticação de Identidade Gerida Atribuída ao Utilizador.
       
    Para Azure SQL Managed Instance:
        - Se você usar a autenticação da entidade de serviço, siga a autenticação da entidade de serviço.
       - Se utilizar a autenticação de identidade gerida atribuída pelo sistema, siga Autenticação de identidade gerida atribuída pelo sistema.
       - Se utilizar a autenticação de identidade gerida atribuída ao utilizador, siga Autenticação de Identidade Gerida Atribuída ao Utilizador.
    Se encontrar a mensagem de erro que contém The server was not found or was not accessible ao usar Azure SQL Managed Instance, este erro é geralmente causado por não ativar o endpoint público Azure SQL Managed Instance. Consulte Configure o endpoint público em Azure SQL Managed Instance para ativar o endpoint público Azure SQL Managed Instance.

Código de erro: SqlOperationFailed

  • Mensagem: A database operation failed. Please search error to get more details.

  • Causas e recomendações: Diferentes causas podem levar a este erro. Verifique a lista a seguir para análise de possíveis causas e recomendações relacionadas.

    Análise de causa Recomendação
    Se a mensagem de erro contiver a cadeia de caracteres "SqlException", o Banco de dados SQL lançará um erro indicando que alguma operação específica falhou. Se o erro SQL não estiver claro, tente alterar o banco de dados para o nível de compatibilidade mais recente '150'. O sistema pode lançar os erros de SQL da versão mais recente. Para obter mais informações, consulte a documentação.
    Para obter mais informações sobre como solucionar problemas de SQL, pesquise por código de erro SQL em Erros do mecanismo de banco de dados. Para mais ajuda, contacte o suporte Azure SQL.
    Se a mensagem de erro contiver o texto "PdwManagedToNativeInteropException", isso geralmente é causado por uma incompatibilidade entre os tamanhos das colunas de origem e destino. Verifique o tamanho das colunas de origem e do coletor. Para mais ajuda, contacte o suporte Azure SQL.
    Se a mensagem de erro contiver a cadeia de caracteres "InvalidOperationException", geralmente é causada por dados de entrada inválidos. Para identificar qual linha encontrou o problema, habilite o recurso de tolerância a falhas na atividade de cópia, que pode redirecionar linhas problemáticas para o armazenamento para investigação adicional. Para obter mais informações, consulte Tolerância a falhas da atividade de cópia.
    Se a mensagem de erro contiver "Tempo limite de execução expirado", geralmente é causada pelo tempo limite da consulta. Configure o tempo limite de consulta na origem e o tempo limite de gravação em lote no coletor para aumentar o tempo limite.
    Se a mensagem de erro contiver Cannot find the object "dbo.Contoso" because it does not exist or you do not have permissions. quando copias dados do híbrido para uma tabela de SQL Server local, é causado pelo facto de a conta SQL atual não ter permissões suficientes para executar pedidos emitidos pelo .NET SqlBulkCopy.WriteToServer ou a tua tabela ou base de dados não existirem. Mude para uma conta SQL mais privilegiada ou verifique se a sua tabela ou base de dados existe.

Código de erro: SqlUnauthorizedAccess

  • Mensagem: Cannot connect to '%connectorName;'. Detail Message: '%message;'

  • Causa: as credenciais estão incorretas ou a conta de entrada não pode acessar o banco de dados SQL.

  • Recomendação: Verifique se a conta de entrada tem permissões suficientes para acessar o banco de dados SQL.

Código de erro: SqlOpenConnectionTimeout

  • Mensagem: Open connection to database timeout after '%timeoutValue;' seconds.

  • Causa: o problema pode ser uma falha transitória do banco de dados SQL.

  • Recomendação: Tente novamente a operação para atualizar a cadeia de conexão do serviço associado com um valor de tempo de espera de conexão maior.

Código de erro: SqlAutoCreateTableTypeMapFailed

  • Mensagem: Type '%dataType;' in source side cannot be mapped to a type that supported by sink side(column name:'%columnName;') in autocreate table.

  • Causa: a tabela de criação automática não pode atender ao requisito de origem.

  • Recomendação: atualize o tipo de coluna em mapeamentos ou crie manualmente a tabela de coletor no servidor de destino.

Erro de código: SqlDataTypeNotSupported

  • Mensagem: A database operation failed. Check the SQL errors.

  • Causa: Se o problema ocorrer na fonte SQL e o erro estiver relacionado ao estouro de SqlDateTime, o valor dos dados excede o intervalo de tipos lógicos (1/1/1753 12:00:00 AM - 12/31/9999 11:59:59 PM).

  • Recomendação: Converta o tipo para a cadeia de caracteres na consulta SQL de origem ou, no mapeamento da coluna de atividade de cópia, altere o tipo de coluna para String.

  • Causa: Se o problema ocorrer no coletor SQL e o erro estiver relacionado ao estouro de SqlDateTime, o valor dos dados excederá o intervalo permitido na tabela do coletor.

  • Recomendação: atualize o tipo de coluna correspondente para o tipo datetime2 na tabela de coletores.

Código de erro: SqlInvalidDbStoredProcedure

  • Mensagem: The specified Stored Procedure is not valid. It could be caused by that the stored procedure doesn't return any data. Invalid Stored Procedure script: '%scriptName;'.

  • Causas e recomendações: Diferentes causas podem levar a este erro. Verifique a lista a seguir para análise de possíveis causas e recomendações relacionadas.

    Análise de causa Recomendação
    A procedura armazenada especificada é inválida. Valide o procedimento armazenado usando Ferramentas SQL. Certifique-se de que o procedimento armazenado pode retornar dados.
    A atividade Pesquisa requer que o procedimento armazenado retorne algum valor, mas o código do procedimento armazenado não retorna nenhum valor. Use a Atividade de Procedimento Armazenado se se espera que o procedimento armazenado não retorne dados.

Código de erro: SqlInvalidDbQueryString

  • Mensagem: The specified SQL Query is not valid. It could be caused by that the query doesn't return any data. Invalid query: '%query;'

  • Causa: A consulta SQL especificada é inválida. A causa pode ser que a consulta não retorna nenhum dado.

  • Recomendação: Valide a consulta SQL usando Ferramentas SQL. Certifique-se de que a consulta pode retornar dados.

Código de erro: SqlInvalidColumnName

  • Mensagem: Column '%column;' does not exist in the table '%tableName;', ServerName: '%serverName;', DatabaseName: '%dbName;'.

  • Causa: a coluna não pode ser encontrada porque a configuração pode estar incorreta.

  • Recomendação: verifique a coluna na consulta, a estrutura no conjunto de dados e os mapeamentos na atividade.

Código de erro: SqlBatchWriteTimeout

  • Mensagem: Timeouts in SQL write operation.

  • Causa: O problema pode ser causado por uma falha transitória do banco de dados SQL.

  • Recomendação: Tente novamente a operação. Se o problema persistir, contacte o suporte Azure SQL.

Código de erro: SqlBatchWriteTransactionFailed

  • Mensagem: SQL transaction commits failed.

  • Causa: Se os detalhes da exceção indicarem constantemente um tempo limite de transação, a latência da rede entre o tempo de execução da integração e o banco de dados será maior do que o limite padrão de 30 segundos.

  • Recomendação: Atualize a cadeia de conexão do serviço SQL vinculado com um valor de tempo limite de conexão igual ou superior a 120 e execute novamente a atividade.

  • Causa: Se os detalhes da exceção indicarem intermitentemente que a conexão SQL está quebrada, pode ser uma falha de rede transitória ou um problema do lado do banco de dados SQL.

  • Recomendação: Repita a atividade e revise as métricas do lado do banco de dados SQL.

Código de erro: SqlBulkCopyInvalidColumnLength

  • Mensagem: SQL Bulk Copy failed due to receive an invalid column length from the bcp client.

  • Causa: A Cópia em Massa do SQL falhou porque o cliente do utilitário do programa de cópia em massa (bcp) recebeu um comprimento de coluna inválido.

  • Recomendação: Para identificar qual linha encontrou o problema, habilite o recurso de tolerância a falhas na atividade de cópia. Isso pode redirecionar linhas problemáticas para o armazenamento para análise posterior. Para obter mais informações, consulte Tolerância a falhas da atividade de cópia.

Código de erro: SqlConnectionIsClosed

  • Mensagem: The connection is closed by SQL Database.

  • Causa: A conexão SQL é fechada pelo banco de dados SQL quando há uma alta simultaneidade de execução e o servidor encerra a conexão.

  • Recomendação: Tente novamente a conexão. Se o problema persistir, contacte o suporte Azure SQL.

Código de erro: SqlServerInvalidLinkedServiceCredentialMissing

  • Mensagem: The SQL Server linked service is invalid with its credential being missing.

  • Causa: o serviço vinculado não foi configurado corretamente.

  • Recomendação: Valide e corrija o serviço vinculado do SQL Server.

Código de erro: Falha do SQLParallel ao detetar coluna de partição

  • Mensagem: Failed to detect the partition column with command '%command;', %message;.

  • Causa: Não há chave primária ou chave exclusiva na tabela.

  • Recomendação: Verifique a tabela para garantir que uma chave primária ou um índice exclusivo seja criado.

Código de erro: SqlParallelFalhaAoDetectarPartiçõesFísicas

  • Mensagem: Failed to detect the physical partitions with command '%command;', %message;.

  • Causa: Nenhuma partição física é criada para a tabela. Verifique a sua base de dados.

  • Recomendação: Referência Criar tabelas particionadas e índices para resolver este problema.

Código de erro: SqlParallelFailedToGetPartitionRangeSynapse

  • Mensagem: Failed to get the partitions for azure synapse with command '%command;', %message;.

  • Causa: Nenhuma partição física é criada para a tabela. Verifique a sua base de dados.

  • Recomendação: Consulte Particionamento de tabelas no pool SQL dedicado para resolver este problema.

Mensagem de erro: Falha na conversão ao converter de uma cadeia de caracteres para uniqueidentifier

  • Sintomas: Quando copia dados de uma fonte de dados tabular (como SQL Server) para Azure Synapse Analytics usando cópia em etapas e PolyBase, recebe o seguinte erro:

    ErrorCode=FailedDbOperation,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error happened when loading data into Azure Synapse Analytics., Source=Microsoft.DataTransfer.ClientLibrary,Type=System.Data.SqlClient.SqlException, Message=Conversion failed when converting from a character string to uniqueidentifier...

  • Cause: Azure Synapse Analytics PolyBase não consegue converter uma cadeia vazia num GUID.

  • Resolução: no coletor de atividade de cópia, em Configurações do PolyBase, defina a opção padrão de tipo de uso como false.

Mensagem de erro: Tipo de dados esperado: DECIMAL(x,x), Valor ofensivo

  • Sintomas: Quando copia dados de uma fonte de dados tabular (como SQL Server) para Azure Synapse Analytics usando cópia em etapas e PolyBase, recebe o seguinte erro:

    ErrorCode=FailedDbOperation,Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message=Error happened when loading data into Azure Synapse Analytics., Source=Microsoft.DataTransfer.ClientLibrary,Type=System.Data.SqlClient.SqlException, Message=Query aborted-- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 415 rows processed. (/file_name.txt) Column ordinal: 18, Expected data type: DECIMAL(x,x), Offending value:..

  • Cause: Azure Synapse Analytics PolyBase não pode inserir uma cadeia vazia (valor nulo) numa coluna decimal.

  • Resolução: no coletor de atividade de cópia, em Configurações do PolyBase, defina a opção "usar tipo padrão" como false.

Mensagem de erro: Mensagem de exceção Java: HdfsBridge::CreateRecordReader

  • Sintomas: Copia dados para Azure Synapse Analytics usando PolyBase e recebe o seguinte erro:

    Message=110802;An internal DMS error occurred that caused this operation to fail. Details: Exception: Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException, Message: Java exception raised on call to HdfsBridge_CreateRecordReader. Java exception message:HdfsBridge::CreateRecordReader - Unexpected error encountered creating the record reader.: Error [HdfsBridge::CreateRecordReader - Unexpected error encountered creating the record reader.] occurred while accessing external file.....

  • Causa: A causa pode ser que o esquema (largura total da coluna) é muito grande (maior que 1 MB). Verifique o esquema da tabela alvo do Azure Synapse Analytics adicionando o tamanho de todas as colunas:

    • Int = 4 bytes
    • Bigint = 8 bytes
    • Varchar(n), char(n), binário(n), varbinário(n) = n bytes
    • Nvarchar(n), nchar(n) = n*2 bytes
    • Data = 6 bytes
    • Datetime/(2), smalldatetime = 16 bytes
    • Datetimeoffset = 20 bytes
    • Decimal = 19 bytes
    • Float = 8 bytes
    • Dinheiro = 8 bytes
    • Smallmoney = 4 bytes
    • Real = 4 bytes
    • Smallint = 2 bytes
    • Tempo = 12 bytes
    • Tipo de dados Tinyint = 1 byte
  • Resolução:

    • Reduza a largura da coluna para menos de 1 MB.
    • Ou use uma abordagem de inserção em massa desativando o PolyBase.

Mensagem de erro: A condição especificada usando cabeçalho(s) condicional(is) HTTP não é atendida

  • Sintomas: Usa consulta SQL para extrair dados de Azure Synapse Analytics e recebe o seguinte erro:

    ...StorageException: The condition specified using HTTP conditional header(s) is not met...

  • Cause: Azure Synapse Analytics encontrado um problema ao consultar a tabela externa em Azure Storage.

  • Resolution: Executa a mesma consulta no SQL Server Management Studio (SSMS) e verifica se obténs o mesmo resultado. Se o fizer, abra um ticket de suporte no Azure Synapse Analytics e forneça o nome do seu servidor e base de dados Azure Synapse Analytics.

A camada de desempenho é baixa e leva a falhas de cópia

  • Sintomas: Copia dados para Azure SQL Database e recebe o seguinte erro: Database operation failed. Error message from database execution : ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.

  • Cause: Azure SQL Database s1 atingiu os limites de entrada/saída (I/O).

  • Resolution: Atualize o nível de desempenho Azure SQL Database para resolver o problema.

Mensagem de erro: String ou dados binários estão truncados

  • Symptoms: Ocorre um erro quando se copiam dados para uma tabela de SQL Server Azure on-premises.

  • Causa: A definição de esquema de tabela SQL tem uma ou mais colunas com menos comprimento do que o esperado.

  • Resolução: para resolver o problema, tente o seguinte:

    1. Para identificar quais linhas apresentam o problema, aplique a tolerância a falhas no sink SQL, especialmente redirectIncompatibleRowSettings.

      Nota

      A tolerância a falhas pode exigir tempo de execução extra, o que pode levar a custos mais altos.

    2. Verifique novamente os dados redirecionados em relação ao comprimento da coluna do esquema da tabela SQL para ver quais colunas precisam ser atualizadas.

    3. Atualize o esquema da tabela em conformidade.

Código de erro: FailedDbOperation

  • Mensagem: User does not have permission to perform this action.

  • Recomendação: Certifique-se de que o utilizador configurado no conector de Azure Synapse Analytics deve ter permissão 'CONTROL' na base de dados alvo ao usar o PolyBase para carregar dados. Para obter informações mais detalhadas, consulte este documento.

Código de erro: Msg 105208

  • Sintomas: Código de erro: Error code: Msg 105208, Level 16, State 1, Line 1 COPY statement failed with the following error when validating value of option 'FROM': '105200;COPY statement failed because the value for option 'FROM' is invalid.'
  • Cause: Atualmente, ingerir dados usando o comando COPY numa conta Azure Storage que está a usar a nova funcionalidade de particionamento DNS resulta num erro. O recurso de partição DNS permite que os clientes criem até 5.000 contas de armazenamento por assinatura.
  • Resolutions: Provisionar uma conta de armazenamento numa subscrição que não utilize a nova funcionalidade de partição DNS Azure Storage (atualmente em Pré-visualização Pública).

Código de erro: SqlDeniedPublicAccess

  • Mensagem: Cannot connect to SQL Database: '%server;', Database: '%database;', Reason: Connection was denied since Deny Public Network Access is set to Yes. To connect to this server, 1. If you persist public network access disabled, please use Managed Virtual Network IR and create private endpoint. https://docs.microsoft.com/en-us/azure/data-factory/managed-virtual-network-private-endpoint; 2. Otherwise you can enable public network access, set "Public network access" option to "Selected networks" on Azure SQL Networking setting.

  • Causes: Azure SQL Database está configurado para negar o acesso à rede pública. Isso requer o uso de uma rede virtual gerida e criar um ponto final privado para acesso.

  • Recomendação:

    1. Se insistes em desativar o acesso à rede pública, utiliza o runtime de integração de rede virtual gerida e cria um endpoint privado. Para mais informações, consulte Azure Data Factory rede virtual gerida.

    2. Caso contrário, ative o acesso à rede pública definindo a opção Acesso à rede pública para Redes selecionadas na página de definição Azure SQL Database Networking.

Para obter mais ajuda na solução de problemas, tente estes recursos: