Comment trouver le port pour MS SQL Server 2008?


107

J'exécute MS SQL Server 2008 sur ma machine locale. Je sais que le port par défaut est 1433 mais certains comment il n'écoute pas sur ce port. Le SQL est une édition Express.

J'ai déjà essayé le journal, SQL Server Management Studio, le registre et la procédure stockée étendue pour trouver le port. Mais je n'ai pas pu le trouver. Aidez-moi, s'il vous plaît. Merci.


Je mets à jour la question avec d'autres ressources que j'ai consultées afin que j'en ai des signets et que d'autres puissent également les utiliser. blogs.msdn.com/sql_protocols/archive/2008/11/05/... decipherinfosys.wordpress.com/2008/01/02/... dumbledad.wordpress.com/2008/07/09/...
royalghost

J'utilise la vue TCP pour voir le port sur lequel il fonctionne. Je suis surpris de voir que le serveur prend un port dynamique au lieu de 1433 même après l'avoir installé comme instance par défaut. J'ai également désinstallé l'édition express et installé l'édition complète après quoi je ne peux voir le processus que sqlservr.exe: 5272. Et je suppose qu'il écoute sur le port 5272.
royalghost

Réponses:


140

Cliquez sur le Startbouton sous Windows. Aller àAll Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Cliquez sur SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP double-clic (clic droit sélectionner Properties) sur TCP/IP.

Vous trouverez Default Port 1433.

Selon la connexion, le numéro de port peut varier.


Sur mon ordinateur, exécutant Windows 10 et avec SQL Server 2012 Express installé, SQL Server Configuration Manager n'est pas répertorié dans le menu Démarrer de Windows, mais se trouve dans le composant logiciel enfichable MMC Gestion de l' ordinateur sous le groupe Services et applications . Le port dynamique n'est pas non plus sous l'élément 'Configuration du client natif SQL' (qui est la version "11.0" pour moi) mais sous l' élément Configuration réseau SQL Server (et dans l' onglet Adresses IP de la fenêtre des propriétés du protocole TCP / IP , à tout en bas, dans le réglage TCP Dynamic Ports ).
Kenny Evitt

Cette réponse fait référence au port client, pas au port serveur, ce qui est demandé dans la question d'origine. La réponse de @ brothers28 ci-dessous est plus précise.
Slogmeister Extraordinaire

52

Vous pouvez également regarder avec un

netstat -abn

Il donne les ports avec l'application correspondante qui les maintient ouverts.

Modifier : ou TCPView .


Pouvez-vous me dire sous quel nom MS SQL Server 2008 est nommé en tant qu'application?
royalghost

2
Cela devrait être sqlservr.exe (je n'en ai pas à vérifier).
rslite

1
Cela a fonctionné pour moi. Le numéro de port est sur la ligne au-dessus de [sqlservr.exe].
Zane

Je l'ai trouvé sous Ssms.exe
ThiagoPonte

49

Voici 5 méthodes que j'ai trouvées:

  • Méthode 1: Gestionnaire de configuration SQL Server
  • Méthode 2: Observateur d'événements Windows
  • Méthode 3: journaux d'erreurs SQL Server
  • Méthode 4: sys.dm_exec_connections DMV
  • Méthode 5: lecture du registre à l'aide de xp_instance_regread

Méthode 4: sys.dm_exec_connections DMV
Je pense que c'est presque le moyen le plus simple ... Les
DMV retournent l'état du serveur qui peut être utilisé pour surveiller l'instance SQL Server. Nous pouvons utiliser sys.dm_exec_connections DMV pour identifier le numéro de port que l'instance SQL Server écoute en utilisant le code T-SQL ci-dessous:

SELECT local_tcp_port
FROM   sys.dm_exec_connections
WHERE  session_id = @@SPID
GO

Result Set:
local_tcp_port
61499

(1 row(s) affected)

Méthode 1: Gestionnaire de configuration SQL Server

Étape 1. Cliquez sur Démarrer> Tous les programmes> Microsoft SQL Server 2012> Outils de configuration> Gestionnaire de configuration SQL Server

Étape 2. Accédez à Gestionnaire de configuration SQL Server> Configuration réseau SQL Server> Protocoles pour

Étape 3. Cliquez avec le bouton droit sur TCP / IP et sélectionnez Propriétés

entrez la description de l'image ici

Étape 4. Dans la boîte de dialogue Propriétés TCP / IP, accédez à l'onglet Adresses IP et faites défiler vers le bas jusqu'au groupe IPAll.

entrez la description de l'image ici

Si SQL Server est configuré pour s'exécuter sur un port statique, il sera disponible dans la zone de texte Port TCP, et s'il est configuré sur un port dynamique, le port actuel sera disponible dans la zone de texte Ports dynamiques TCP. Ici, mon instance écoute sur le numéro de port 61499.

Les autres méthodes que vous pouvez trouver ici: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/


1
A travaillé pour moi. J'ai essayé les propriétés TCP / IP de la configuration SQL Native Client et cela retournait la valeur par défaut 1433. Mais quand j'ai vérifié les ports TCP dynamiques de la configuration réseau SQL Server. J'ai trouvé que le port est 67244. Et après cela, j'ai pu me connecter avec succès à ce port. +1
Reuben

17

Je suis tombé sur cela parce que j'avais juste des problèmes pour créer une connexion à distance et je ne pouvais pas comprendre pourquoi la configuration du port 1433 dans le pare-feu ne faisait pas le travail. J'ai enfin une image complète maintenant, alors j'ai pensé que je devrais partager.

Tout d'abord, il est indispensable d'activer "TCP / IP" à l'aide du Gestionnaire de configuration SQL Server sous Protocoles pour SQLEXPRESS!

Lorsqu'une instance nommée est utilisée ("SQLExpress" dans ce cas), celle-ci écoutera sur un port dynamique. Pour trouver ce port dynamique, vous avez deux options; pour n'en nommer que quelques-uns:

  • vérification ERRORLOGde SQL Server situé dans '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'(à l'intérieur, vous trouverez une ligne similaire à celle-ci: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"-> donc 51118 est le port dynamique dans ce cas.

  • vérification du registre:, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAllpour mon cas TcpDynamicPorts=51118.

    Edit : {MSSQL instance name}est quelque chose comme:, MSSQL10_50.SQLEXPRESSpas seulementSQLEXPRESS

Bien sûr, autoriser ce port TCP dans le pare-feu et créer une connexion à distance en passant: "x.x.x.x,51118"(où xxxx est l'adresse IP du serveur) le résout déjà à ce stade.

Mais ensuite j'ai voulu me connecter à distance en passant le nom de l'instance (par exemple:) x.x.x.x\SQLExpress. C'est à ce moment que le service SQL Browser entre en jeu. C'est l'unité qui résout le nom de l'instance dans le port 51118. Le service SQL Browser écoute sur le port UDP 1434 (standard et statique), j'ai donc dû autoriser cela également dans le pare-feu du serveur.

Pour étendre un peu la réponse réelle: si quelqu'un d'autre n'aime pas les ports dynamiques et veut un port statique pour son instance SQL Server, devrait essayer ce lien .


1
+1 pour le service SQL Browser. C'est la clé du fonctionnement de SQL Express avec les numéros de port
peterG

11

Dans le journal ERROLOG pour une ligne comme ci-dessous. Si vous ne le voyez pas, SQL Server n'est pas activé pour l'accès à distance ou ce n'est tout simplement pas via TCP. Vous pouvez modifier cela via le Gestionnaire de configuration SQL Server.

Server is listening on [ 192.128.3.2 <ipv4> 1433].

Je ne vois pas ce journal mais sur le SQL Server Management Studio sous Connexions «Autoriser les connexions à distance à ce serveur» est coché. Par conséquent, je crois comprendre que la connexion à distance est autorisée.
royalghost

@royal: en plus de «autoriser les connexions à distance», vous devez également activer le protocole TCP. Pour le moment, le serveur n'écoute probablement que NP
Remus Rusanu

voir la réponse ci-dessous de @morteza pour lire le journal via une requête SQL xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

8

J'ai résolu le problème en activant le TCP / IP à l'aide du gestionnaire de configuration SQL Server sous Protocoles pour SQLEXPRESS2008, j'ai redémarré le service et maintenant le «serveur écoute sur» apparaît dans le fichier ERRORLOG


8

Essayez ceci (nécessite un accès à sys.dm_exec_connections):

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL

3
FYI: si le serveur SQL n'a pas de connexion ouverte, il ne montrera probablement rien.
Tilo

6
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[Identifier le port utilisé par l'instance nommée du moteur de base de données SQL Server en lisant les journaux d'erreurs SQL Server]


1
merci bon conseil Morteza, j'obtiens une erreur en utilisant ce qui précède sur SQL2012 mais ce qui suit suffit à mes besoins: XP_READERRORLOG 0, 1, N'Server écoute '
mattpm

Copiez cette erreur avec votre requête, mais cela fonctionne, xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

6

Vous pouvez utiliser ces deux commandes: tasklistetnetstat -oan

Tasklist.exeest comme taskmgr.exemais en mode texte.

Avec tasklist.exeou taskmgr.exevous pouvez obtenir un PID desqlservr.exe

Avec netstat -oan, il affiche un PID de connexion et vous pouvez le filtrer.

Exemple:

C:\>tasklist | find /i "sqlservr.exe"
sqlservr.exe  1184 Services    0 3.181.800 KB

C:\>netstat -oan | find /i "1184"
TCP  0.0.0.0:1280  0.0.0.0:0  LISTENING  1184

Dans cet exemple, le port SQLServer est 1280

Extrait de: http://www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html


5

J'utilise le script suivant dans SSMS

SELECT
     s.host_name
    ,c.local_net_address
    ,c.local_tcp_port
    ,s.login_name
    ,s.program_name
    ,c.session_id
    ,c.connect_time
    ,c.net_transport
    ,c.protocol_type
    ,c.encrypt_option
    ,c.client_net_address
    ,c.client_tcp_port
    ,s.client_interface_name
    ,s.host_process_id
    ,c.num_reads as num_reads_connection
    ,c.num_writes as num_writes_connection
    ,s.cpu_time
    ,s.reads as num_reads_sessions
    ,s.logical_reads as num_logical_reads_sessions
    ,s.writes as num_writes_sessions
    ,c.most_recent_sql_handle
FROM sys.dm_exec_connections AS c
INNER JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id

--filter port number
--WHERE c.local_tcp_port <> 1433

Je ne sais pas pourquoi cela a été déclassé, cela ne donne pas la réponse immédiate, mais cela vous donne la réponse et bien plus encore. Ajouter ceci à ma liste de requêtes utiles.
Tony

comme la requête beaucoup, il semble également ne pas montrer si aucune connexion n'est ouverte / établie.
Tilo

4

Cela peut également être fait via une analyse de port, qui est la seule méthode possible si vous n'avez pas d'accès administrateur à un serveur distant.

L'utilisation de Nmap ( http://nmap.org/zenmap/ ) pour faire un "scan TCP intense" vous donnera des résultats comme celui-ci pour toutes les instances sur le serveur:

[10.0.0.1\DATABASE]    
Instance name: DATABASE
Version: Microsoft SQL Server 2008 R2 RTM    
Product: Microsoft SQL Server 2008 R2    
Service pack level: RTM    
TCP port: 49843    
Named pipe: \\10.0.0.1\pipe\MSSQL$DATABASE\sql\query

Remarque importante: pour tester avec l'analyseur de requêtes ou MS SQL Server Management Studio, vous devez former le nom et le port de votre serveur différemment de ce que vous vous connectez normalement à un port, via HTTP par exemple, en utilisant une virgule au lieu de deux-points .

  • Nom du serveur Management Studio: 10.0.0.1,49843
  • Chaîne de connexion: Data Source=10.0.0.1,49843

toutefois

  • Chaîne de connexion JDBC: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

1

Cela fonctionne pour SQL Server 2005 - 2012. Recherchez l'événement id = 26022 dans le journal des erreurs sous applications. Cela montrera le numéro de port du serveur SQL ainsi que les adresses IP autorisées à accéder.


1

En plus de ce qui est listé ci-dessus, j'ai dû activer les ports TCP et UDP pour que SQLExpress se connecte à distance. Comme j'ai trois instances différentes sur ma machine de développement, j'active 1430-1435à la fois TCP et UDP.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.