Solução de problemas¶
Este tópico fornece diretrizes para a solução de problemas com o Snowflake Native SDK for Connectors. Se você quiser descobrir a causa de um erro específico, precisará de ferramentas apropriadas que facilitem o processo de solução de problemas. Por essa razão o Snowflake Native SDK for Connectors fornece alguns procedimentos, exibições e outros métodos para solucionar problemas do conector de forma eficaz.
Respostas de procedimento¶
Normalmente, quando algo errado acontece com o conector, ou mesmo quando o usuário não consegue executar o procedimento específico com sucesso devido ao estado do conector, a primeira fonte de dados de solução de problemas deve ser a resposta do procedimento. No Snowflake Native SDK for Connectors, a resposta de erro do procedimento é padronizada. A resposta é retornada como um VARIANT com dois campos, que estão sempre presentes:
response_code- o valor deste campo, em caso de resposta de erro, é um código de erro, por exemploINVALID_CONNECTOR_STATUSmessage- o valor deste campo é uma mensagem que fornece mais informações sobre o erro ocorrido
Estrutura de uma resposta de erro:
{ "response_code": "<ERROR_CODE>", "message": "<error message>" }
Objetos de banco de dados¶
O Snowflake Native SDK for Connectors fornece algumas exibições e procedimentos que ajudam a verificar o estado real do conector.
Exibições:
PUBLIC.CONNECTOR_CONFIGURATION(consulte Referência de configurações de conexão)PUBLIC.SYNC_STATUS(consulte Referência do status de sincronização)PUBLIC.CONNECTOR_STATS(consulte Referência de estatísticas do conector)PUBLIC.AGGREGATED_CONNECTOR_STATS(consulte Referência de estatísticas do conector)
Procedimentos:
PUBLIC.GET_CONNECTOR_STATUS()(consulte Referência de SQL essencial)PUBLIC.GET_CONNECTION_CONFIGURATION()(consulte Referência de configurações de conexão)
Tabela de eventos¶
Por padrão, os procedimentos fornecidos pelo SDK que são implementados em Java usam ConnectorErrorHelper para encapsular exceções lançadas durante a execução de um procedimento específico. Além de encapsular a exceção lançada e mapeá-la para ConnectorResponse com um código de erro, a implementação padrão de ConnectorErrorHelper registra eventos com base nas exceções geradas na Tabela de Eventos, se ela estiver configurada na conta do cliente. Se você quiser saber mais sobre o uso da Tabela de eventos, consulte Registro, rastreamento e métricas.
Existe a possibilidade de filtrar os logs gerados pelo Snowflake Native SDK for Connectors da tabela de eventos conhecendo apenas o nome da instância do aplicativo. Além disso, também existe a possibilidade de filtrar logs de erros que ocorreram nas partes mais comuns do conector.
Consulta de exemplo:
SELECT * FROM PLATFORM_CI_TOOLS.PUBLIC.EVENTS
    WHERE RESOURCE_ATTRIBUTES:"snow.database.name" LIKE '<INSTANCE_NAME>'
    [AND SCOPE:"name" LIKE '<ERROR_CODE>']
    [ORDER BY timestamp DESC];
Possíveis códigos de erro:
CONFIGURE_CONNECTOR_FAILED- ocorre quando a etapa de configuração do conector do assistente falhouSET_CONNECTION_CONFIGURATION_FAILED- ocorre quando a etapa de definição de configuração da conexão do assistente falhouFINALIZE_CONNECTOR_CONFIGURATION_FAILED- ocorre quando a etapa de finalização de configuração do conector do assistente falhouPAUSE_CONNECTOR_FAILED- ocorre quando o processo de pausa do conector falhouRESUME_CONNECTOR_FAILED- ocorre quando o processo de retomada do conector falhou
Recuperação do estado do conector¶
Se ocorrer um erro não detectado durante a pausa ou a retomada do processo, o que faz com que o conector não reverta o processo e falhe inesperadamente, um status do conector ERROR poderá ser definido. Além disso, se por algum motivo esses processos forem encerrados repentinamente, o conector poderá ficar «preso» em um status de conector STARTING ou PAUSING.
Esses problemas devem ser diagnosticados usando os métodos mencionados acima e deve-se tentar fazer um reparo adequado. Em muitos casos, pode ser necessária uma reinstalação completa do conector, mas se o reparo foi bem-sucedido e o único problema restante é o status do conector «preso», há algumas soluções possíveis:
Se o conector estiver «preso» no status
STARTING, outra chamada do procedimentoPUBLIC.RESUME_CONNECTOR()poderá corrigir o problema de statusSe o conector estiver «preso» no status
PAUSING, outra chamada do procedimentoPUBLIC.PAUSE_CONNECTOR()poderá corrigir o problema de statusSe os métodos mencionados anteriormente falharem, ou se o conector estiver no status
ERROR, o procedimentoPUBLIC.RECOVER_CONNECTOR_STATE(STRING)poderá ser usado para forçar a mudança de status (consulte Referência de SQL essencial). É recomendável forçar a alteração para o statusPAUSEDe tentar reiniciar o conector usando o procedimentoPUBLIC.RESUME_CONNECTOR()