Trouver le port d’écoute d’une instance SQL Server (avec une requête)

Le service SQL Browser permet d’obtenir la liste des instances SQL Server ainsi que leur port d’écoute. Pour des raisons de sécurité, on peut donc vouloir désactiver ce service, mais il nous faut auparavant connaître le port d’écoute de chacune d’entre elles : par défaut, le port d’écoute de l’instance par défaut est 1433. Si l’on dispose de plusieurs instances SQL Server installées sur une même machine, chacune dispose d’un port qui lui est dédié. Voici donc une requête qui vous permet de retrouver le port d’écoute d’une instance SQL Server en particulier.

Cette requête n’est pas des plus orthodoxes puisqu’elle fait appel à la procédure stockée étendue système xp_regread. Cela étant, elle permet de retrouver le port d’écoute d’une instance SQL Server instantanément :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE @TCP_port varchar(5)
        , @registry_path varchar(100)

SELECT @registry_path = CASE @@SERVICENAME
                WHEN 'MSSQLSERVER' THEN 'SOFTWARE\Microsoft\MSSQLSERVER\MSSQLSERVER\SuperSocketNetLib\TCP'
                ELSE 'SOFTWARE\Microsoft\Microsoft SQL Server\' + @@SERVICENAME + '\MSSQLServer\SuperSocketNetLib\TCP'
        END

EXEC master.dbo.xp_regread
    @rootkey = 'HKEY_LOCAL_MACHINE'
    , @key = @registry_path
    , @value_name = 'TcpPort'
    , @value = @TCP_port OUTPUT

SELECT @TCP_port AS PortNumber
        , @@SERVERNAME AS ServerName
        , @@SERVICENAME AS ServiceName

Lorsque l’on a le service SQL Browser désactivé, on peut se connecter à une instance nommée en précisant le nom du serveur + virgule + le numéro de port. Par exemple, si nous disposons d’un serveur ELSUKETW8 doté d’une instance nommée SQL2012 qui écoute les connexions sur le port 62549, alors dans la chaîne de connexion de nos applications, nous devons remplacer Server=ELSUKETW8\SQL2012 par Server=ELSUKETW8,62549.

Bon routage à tous !

ElSüket ;)

Laisser un commentaire