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.
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:
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.
Atualize o driver do aplicativo para um driver compatível.
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)