Partilhar via


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

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

Erros

Você recebe as seguintes mensagens de aviso e erro:

AVISO: proc_procname retornado 0x2746 HResult, 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 : cliente não pode estabelecer conexão

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

Perguntas a serem consideradas

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

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

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

  • Você executa um teste de UDL no servidor de aplicativo usando o Provedor OLE DB da Microsoft para SQL Server e o provedor SNAC 11. A conexão falha. Você também recebe uma mensagem que afirma que o driver "Microsoft OLE DB Provider for SQL Server" está preterido e não dá suporte ao TLS 1.2.

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

    A conexão falhou com o SQL State: '08001' SQL Server Error: 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] Cliente não pode estabelecer conexão.

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

Solução

Para resolve esses problemas, siga estas etapas:

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

    Observação

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

  2. Atualize o driver de aplicativo para um driver com suporte.

  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 aplicativo, use MSOLEDBSQL v19 ou ODBC v18. Por padrão, esses drivers são incluídos junto com a criptografia. Para saber mais, confira os seguintes artigos:

Confira também

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