Partager via


Des erreurs de connexion intermittentes se produisent lors de l’utilisation de l’utilitaire SQLCMD

Cet article vous aide à résoudre les problèmes intermittents de connexion « erreur de système d’exploitation 10054 » qui se produisent lorsque vous utilisez l’outil en ligne de commande SQLCMD.

Erreurs

Vous recevez les messages d’avertissement et d’erreur suivants :

AVERTISSEMENT : proc_procname retourné HResult 0x2746, niveau 16, état 1

Fournisseur TCP : une connexion existante a été fermée de force par l’hôte distant.

SQLCMD.EXE : Sqlcmd : Erreur : Microsoft SQL Server Native Client 10.0 : Le client ne peut pas établir la connexion

L’une des causes possibles de ces erreurs est un pilote non pris en charge.

Questions à prendre en compte

Passez en revue les scénarios suivants pour déterminer si l’un correspond à votre problème :

  • Vous collectez une trace réseau et vous apprenez que TLS 1.0 et 1.1 sont désactivés et QUE TLS 1.2 est activé. Sur le serveur qui exécute SQL Server, TLS 1.0, 1.1 et 1.2 sont activés sur le serveur d’applications.

    Capture d’écran montrant que TLS 1.0, 1.1 et 1.2 sont activés sur le serveur d’applications.

  • Vous exécutez un test UDL sur le serveur d’applications à l’aide du fournisseur Microsoft OLE DB pour SQL Server et du fournisseur SNAC 11. La connexion échoue. Vous recevez également un message indiquant que le pilote « Fournisseur Microsoft OLE DB pour SQL Server » est déconseillé et ne prend pas en charge TLS 1.2.

  • Le serveur d’applications utilise SQL Server Native Client 11 pour tester correctement la source de données ODBC. Si SQL Server Native Client 10.0 n’est pas pris en charge, le message d’erreur suivant peut s’afficher :

    Échec de la connexion avec l’état SQL : « 08001 » SQL Server Erreur : 10054 [Microsoft][SQL Server Native Client 10.0]Fournisseur TCP : une connexion existante a été fermée de force par l’hôte distant. [Microsoft] [SQL Server Native Client 10.0] Le client ne peut pas établir la connexion.

    Ce message peut s’afficher, car le serveur d’applications utilise l’ancienne version de Diffie-Hellman'algorithme (v1) et SQL Server utilise la version la plus récente (v2). Cette incompatibilité provoque des échecs TLS intermittents.

Résolution

Pour résoudre ces problèmes, procédez comme suit :

  1. Spécifiez SQL Server Native Client 11 dans le chaîne de connexion.

    Remarque

    Microsoft ne prend plus en charge SNAC 11. Si vous rencontrez des problèmes lors de l’utilisation de SNAC 11, vous devez effectuer une mise à niveau vers une version prise en charge du pilote Microsoft avant de pouvoir fournir un support technique.

  2. Mettez à niveau le pilote d’application vers un pilote pris en charge.

  3. Utilisez MSOLEDBSQL v18 ou ODBC v17 si vous n’utilisez pas le chiffrement pour la connexion. Si vous utilisez le chiffrement pour la connexion sur le serveur d’applications, utilisez MSOLEDBSQL v19 ou ODBC v18. Par défaut, ces pilotes sont inclus avec le chiffrement. Si vous souhaitez en savoir plus, consultez les articles suivants :

Voir aussi

Une connexion existante a été fermée de force par l’hôte distant (erreur de système d’exploitation 10054)