Les utilisateurs peuvent ne pas être en mesure de se connecter à distance à SQL Server à l’aide du protocole TCP/IP

Cet article vous aide à résoudre le problème où vous ne pouvez pas vous connecter à distance à SQL Server à l’aide du protocole TCP/IP.

Version du produit d’origine : SQL Server
Numéro de la base de connaissances d’origine : 2018930

Symptômes

Lorsque vous utilisez Microsoft SQL Server, vous pouvez voir un ou plusieurs des symptômes suivants :

  • Seuls les utilisateurs disposant de l’autorisation CONTROL SERVER (par exemple, les membres du rôle serveur fixe syadmin ) peuvent se connecter via TCP/IP. Les utilisateurs qui ne disposent pas de cette autorisation ne peuvent pas se connecter à distance via le protocole TCP/IP à l’aide de l’authentification Windows ou SQL Server.

    Remarque

    Vous remarquerez que les connexions utilisateur avec élévation de privilèges s’affichent uniquement dans sys.dm_exec_sessions vue de gestion dynamique (Transact-SQL), mais pas dans la vue sys.dm_exec_connections (Transact-SQL).

  • Les connexions locales et distantes utilisant le protocole canaux nommés, ainsi que les connexions locales utilisant le protocole de mémoire partagée, continuent de fonctionner correctement.

En outre, les messages suivants sont enregistrés dans le fichier de journal des erreurs SQL Server :

  • Au démarrage de SQL Server :

    Erreur : 26023, Gravité : 16, État : 1.
    Le fournisseur TCP du serveur n’a pas pu écouter ['any’ipv6<> 1963]. Le port TCP est déjà utilisé.
    Erreur : 9692, Gravité : 16, État : 1.
    Le transport du protocole Service Broker ne peut pas écouter sur le port 1963, car il est utilisé par un autre processus.

  • Pour les échecs de connexion :

    SQL Server 2008 et versions ultérieures :

    Erreur : 18456, Gravité : 14, État : 11.
    Échec de la connexion pour l’utilisateur « MyDomain\TestAcc ». Motif : La validation de l’accès au serveur basée sur les jetons a échoué avec une erreur d’infrastructure. Recherchez les erreurs précédentes.

Cause

L’erreur se produit lorsque vous configurez un point de terminaison TCP pour Service Broker à l’aide du même port que celui que le SQL Server instance est configuré pour utiliser. Vous pouvez obtenir la liste des points de terminaison en exécutant la requête suivante :

SELECT * FROM sys.tcp_endpoints

Remarque

Comme expliqué dans la rubrique de la documentation en ligne sur sys.tcp_endpoints (Transact-SQL), cet affichage ne contient pas d’informations sur les ports et les protocoles que SQL Server instance est actuellement configuré pour utiliser. Pour trouver ces informations, consultez Gestionnaire de configuration SQL Server.

Résolution

  • Méthode 1 : Supprimez le point de terminaison à l’origine du problème à l’aide de la commande DROP ENDPOINT (Transact-SQL).

    Par exemple, pour supprimer un point de terminaison nommé TestEP , vous pouvez utiliser la commande suivante :

    DROP ENDPOINT TestEP
    
  • Méthode 2 : Modifiez le point de terminaison pour utiliser un port différent à l’aide de la commande ALTER ENDPOINT (Transact-SQL).

    Par exemple, pour modifier un point de terminaison nommé TestEP afin d’utiliser un port différent, vous pouvez utiliser la commande suivante :

    ALTER ENDPOINT TestEP as tcp (listener_port=1980)
    

Plus d’informations

Des problèmes similaires peuvent également se produire avec d’autres points de terminaison TCP tels que ceux créés pour la mise en miroir de bases de données, et les messages d’erreur au démarrage SQL Server changeront en conséquence.