SQL Server, la gestion des ports et SQL Browser

 

Depuis SQL Server 2000, il est possible d’installer plusieurs serveurs SQL Server sur une même machine, via l’installation de plusieurs instances. Ces instances se matérialisent par des services Windows différents et donc des process Windows isolés et bien indépendants.

Il existe deux types d’instances, l’instance par défaut (qui ne possède pas de nom) et les instances nommées.

La connexion à ces deux types d’nstances se fait de manière différente :

  • L’instance par défaut utilise par défaut le port statique 1433. Il suffit ainsi de se connecter sur ce port TCP afin de directement dialoguer avec SQL Server.
    image
  • Les instances nommées utilisent quand à elles des ports dynamiques. A chaque démarrage de service, l’instance va s’attribuer un port TCP disponible. Et celui changera potentiellement à chaque démarrage.
    A moins de vouloir spécifier manuellement le port à chaque connexion, il est donc nécessaire d’’avoir un second acteur capable de renseigner le client qui souhaite se connecter afin de déterminer sur quel port se connecter. Cet acteur externe s’appelle le service SQL Server Browser. Ce service utilise le port UDP 1434 afin de broadcaster sa présence et de communiquer aux clients l’information souhaitée.
    A noter que si vous souhaitez définir des règles de pare-feu liées à des ports et non à un process entier, vous pouvez changer cette attribution dynamique afin d’utiliser un port statique.

Cette différence de fonctionnement dans l’assignation des ports entre l’instance par défaut et les instances nommées est dû au fait que bien que techniquement chaque process a la liberté de s’accaparer le port qu’il souhaite, il existe en réalité des règles bien établies en ce qui concerne cette assignation.

On distingue ainsi 3 plages de port : les ports systèmes (de 0 à 1023), les ports utilisateurs (de 1024 à 49151) et les ports privés/dynamiques (de 49152 à 65535).

Les deux premières catégories de port ne sont pas libres et doivent être utilisées uniquement à bon escient pour les ports systèmes, quand aux ports utilisateurs ceux-ci sont destinés à être utilisés par certains applicatifs enregistrés.

Cette gestion des ports est gérée par l’Internet Assigned Numbers Authority (iana). Cet organisme liste l’ensemble des ports systèmes et l’ensemble des ports utilisateurs enregistrés. Il vous permet également d’enregistrer le port souhaité si disponible.

Microsoft ayant enregistré le port 1433 pour SQL Server et le 1434 pour le SQL Browser, il est normal d’utiliser un port dynamique pour les instances nommées afin de respecter les bonnes pratiques.

Ainsi pour une instance nommée, si vous utiliser un port dynamique, vous devez avoir un SQL Browser démarré et accessible afin de pouvoir vous connecter sur cette instance car ce service va communiquer le port utilisé par l’instance souhaitée.

Si par contre vous assignez un port statique à votre instance nommée, vous n’aurez plus besoin du service SQL Server Browser.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *