web-dev-qa-db-fra.com

Comment trouver le port pour MS SQL Server 2008?

J'exécute MS SQL Server 2008 sur mon ordinateur local. 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 ne pouvais pas le trouver. Aidez-moi, s'il vous plaît. Merci.

103
royalghost

Cliquez sur le bouton Start sous Windows. Allez à 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-cliquez sur (cliquez avec le bouton droit de la souris sur Properties) sur TCP/IP

Vous trouverez Default Port 1433.

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

133
pudaykiran

Vous pouvez aussi regarder avec un

netstat -abn

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

Éditez : ou TCPView .

50
rslite

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'erreur 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 renvoient 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. Sélectionnez 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.

enter image description here

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

enter image description here

Si SQL Server est configuré pour fonctionner sur un port statique, il sera disponible dans la zone de texte TCP Port. S'il est configuré sur le port dynamique, le port actuel sera disponible dans TCP Ports dynamiques. zone de texte. 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/ =

49
brothers28

Je suis tombé sur cette erreur car je ne disposais que de problèmes pour créer une connexion à distance et je ne comprenais pas pourquoi la configuration du port 1433 dans le pare-feu ne suffisait pas. J'ai enfin l'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), cela écoute sur un port dynamique. Pour trouver ce port dynamique, vous avez plusieurs options. pour en nommer quelques uns:

  • vérification de ERRORLOG de SQL Server situé dans '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log' (à l'intérieur, vous trouverez une ligne semblable à ceci: "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\IPAll, pour mon cas TcpDynamicPorts=51118.

    Edit : {MSSQL instance name} est quelque chose comme: MSSQL10_50.SQLEXPRESS, pas seulement SQLEXPRESS

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

Mais ensuite, j'ai voulu me connecter à distance en donnant 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), donc je devais autoriser cela également dans le pare-feu du serveur.

Pour étendre un peu la réponse: si quelqu'un d'autre n'aime pas les ports dynamiques et veut un port statique pour son instance SQL Server, essayez ceci link .

17
Learner

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 simplement pas via TCP. Vous pouvez changer cela via le Gestionnaire de configuration SQL Server.

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

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
8
Tilo

J'ai résolu le problème en activant le protocole TCP/IP à l'aide du gestionnaire de configuration SQL Server sous Protocoles pour SQLEXPRESS2008, j'ai redémarré le service et le message "Le serveur écoute" s'affiche dans le fichier ERRORLOG.

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

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

6
Morteza

Vous pouvez utiliser ces deux commandes: tasklist et netstat -oan

Tasklist.exe est comme taskmgr.exe mais en mode texte.

Avec tasklist.exe ou taskmgr.exe, vous pouvez obtenir un PID de sqlservr.exe

Avec netstat -oan, il affiche un PID de connexion que vous pouvez 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

6
Demestrestalk

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
5
Rubens

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

En utilisant Nmap ( http://nmap.org/zenmap/ ) pour effectuer une "analyse intense TCP scan", vous obtiendrez 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 votre nom de serveur et votre port de manière différente de celle à laquelle vous vous connectez normalement, sur 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

pourtant

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

En plus de ce qui est répertorié ci-dessus, je devais activer les ports TCP et UDP pour que SQLExpress puisse se connecter à distance. Comme j'ai trois instances différentes sur ma machine de développement, j'active 1430-1435 pour TCP et UDP.

1
D. Davidson

This 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
Mukus

La solution PS couvrira toutes les instances de l'hôte + vous donnera toutes les adresses des clients connectés, toutes belles et propres:

ForEach ($SQL_Proc in Get-Process | Select-Object -Property ProcessName, Id | Where-Object {$_.ProcessName -like "*SQL*"})
{
    Get-NetTCPConnection | `
     Where-Object {$_.OwningProcess -eq $SQL_Proc.id} | `
      Select-Object -Property `
                                @{Label ="Process_Name";e={$SQL_Proc.ProcessName}}, `
                                @{Label ="Local_Address";e={$_.LocalAddress + ":" + $_.LocalPort }},  `
                                @{Label ="Remote_Address";e={$_.RemoteAddress + ":" + $_.RemotePort}}, State | `
      Format-Table
}

La deuxième solution, pour certains, serait peut-être plus facile d'ouvrir resource monitor et d'aller au Network>TCP Connections à partir de là, vous pourrez voir quelque chose comme ça, cherchez simplement votre processus SQLSERVER: enter image description here

0
Bartosz X