Compartilhar via


Erros de conexão intermitentes ocorrem ao usar o utilitário SQLCMD

Este artigo ajuda você a resolver problemas de conexão intermitente "Erro do sistema operacional 10054" que ocorrem quando você usa a ferramenta de linha de comando SQLCMD.

Errors

Você recebe as seguintes mensagens de aviso e erro:

AVISO: proc_procname retornou HResult 0x2746, Nível 16, Estado 1

Provedor TCP: Uma conexão existente foi fechada à força pelo host remoto.

SQLCMD.EXE : Sqlcmd: Erro: Microsoft SQL Server Native Client 10.0 : O cliente não consegue estabelecer conexão

Uma possível causa desses erros é um driver sem suporte.

Questões a serem consideradas

Analise os seguintes cenários para determinar se algum corresponde ao seu problema:

  • Você coleta um rastreamento de rede e descobre que o TLS 1.0 e 1.1 estão desabilitados e o TLS 1.2 está habilitado. No servidor que está executando o SQL Server, o TLS 1.0, 1.1 e 1.2 estão habilitados no servidor de aplicativos.

    Captura de tela que mostra que o TLS 1.0, 1.1 e 1.2 estão ativados no servidor de aplicativos.

  • Você executa um teste UDL no servidor de aplicativos usando o Microsoft OLE DB Provider for SQL Server e o SNAC 11 provider. A conexão falha. Você também recebe uma mensagem informando que o driver "Microsoft OLE DB Provider for SQL Server" foi preterido e não oferece suporte ao TLS 1.2.

  • O servidor de aplicativos usa o SQL Server Native Client 11 para testar com êxito a fonte de dados ODBC. Se não houver suporte para SQL Server Native Client 10.0, você poderá receber a seguinte mensagem de erro:

    A conexão falhou com o estado do SQL: '08001' Erro do SQL Server: 10054 [Microsoft][SQL Server Native Client 10.0]Provedor TCP: uma conexão existente foi fechada à força pelo host remoto. [Microsoft][SQL Server Native Client 10.0] O cliente não consegue estabelecer conexão.

    Essa mensagem pode ser exibida porque o servidor de aplicativos usa a versão mais antiga do algoritmo Diffie-Hellman (v1) e o SQL Server usa a versão mais recente (v2). Essa incompatibilidade causa falhas intermitentes de TLS.

Resolução

Para resolver esses problemas, siga estas etapas:

  1. Especifique SQL Server Native Client 11 na cadeia de conexão.

    Observação

    A Microsoft não oferece mais suporte ao SNAC 11. Se você tiver algum problema ao usar o SNAC 11, deverá atualizar para uma versão com suporte do driver da Microsoft antes que o suporte técnico possa ser fornecido.

  2. Atualize o driver do aplicativo para um driver compatível.

  3. Use MSOLEDBSQL v18 ou ODBC v17 se você não estiver usando criptografia para a conexão. Se você estiver usando criptografia para a conexão no servidor de aplicativos, use MSOLEDBSQL v19 ou ODBC v18. Por padrão, esses drivers são incluídos junto com a criptografia. Para obter mais informações, consulte os seguintes artigos:

Confira também

Uma conexão existente foi fechada à força pelo host remoto (erro do sistema operacional 10054)