Oui, j'ai lu ceci Comment trouver le port pour MS SQL Server 2008?
pas de chance.
telnet 1433
renvoie la connexion a échoué, je dois donc spécifier un autre port.
J'ai essayé d'utiliser
netstat -abn
mais je ne vois pas sqlservr.exe ou quelque chose de similaire sur cette liste.
Pourquoi est-ce si difficile de trouver ce port? : /
Essaye ça:
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on'
GO
http://www.mssqltips.com/sqlservertip/2495/identify-sql-server-tcp-ip-port-being-used/
très simple. notez le PID sqlsrvr.exe dans le gestionnaire de tâches puis exécutez la commande suivante:
netstat -ano | findstr *PID*
il affichera TCP et les connexions UDP de votre serveur SQL (ports compris) standard est 1433 pour TCP et 1434 pour UDP
exemple :
C'est celui qui fonctionne pour moi:
SELECT DISTINCT
local_tcp_port
FROM sys.dm_exec_connections
WHERE local_tcp_port IS NOT NULL
Si vous avez exécuté "netstat -a -b -n" (à partir d'une invite de commande élevée) et que vous ne voyez pas du tout "sqlservr.exe", votre service SQL Server n'est pas en cours d'exécution ou sa bibliothèque réseau TCP/IP est désactivée.
Exécutez le Gestionnaire de configuration SQL Server (Démarrer | Tous les programmes | Microsoft SQL Server 2008 | Outils de configuration).
Naviguez vers les services SQL Server . Dans le volet de droite, recherchez SQL Server (). Est-ce arrêté? Si oui, lancez-le.
Accédez à Configuration réseau SQL Server (ou à la configuration réseau SQL Server (32 bits, selon le cas)), puis à Protocoles pour . Dans le volet de droite, recherchez "TCP/IP". Est-ce désactivé? Si tel est le cas, activez-le, puis redémarrez le service SQL Server.
Notez que l'ID d'instance sera MSSQLSERVER pour l'instance par défaut.
Notez également qu'il n'est pas nécessaire d'activer la bibliothèque réseau TCP/IP pour connecter un client au service. Les clients peuvent également se connecter via la bibliothèque réseau Shared Memory (si le client est sur le même ordinateur) ou la bibliothèque réseau Named Pipes.
Peut-être qu'il n'utilise pas TCP/IP
Examinez le Gestionnaire de configuration SQL Server pour connaître les protocoles qu’il utilise.
Dans notre entreprise, je n'ai pas accès à MSSQL Server. Je ne peux donc pas accéder aux tables système.
Ce qui fonctionne pour moi c'est:
Wireshark
(exécuté en tant qu'administrateur, sélectionnez Interface réseau) lors de l'ouverture de la connexion au serveur.ping
ip.dst == x.x.x.x
Le port est indiqué dans la colonne info
au format src.port -> dst.port
Essayez d'activer le protocole en: Gestionnaire de configuration > Configuration réseau du serveur SQL > Protocoles pour MSSQLSERVER > propriétés de TCP/IP
C'est un autre script que j'utilise:
-- Find Database Port script by Jim Pierce 09/05/2018
USE [master]
GO
DECLARE @DynamicportNo NVARCHAR(10);
DECLARE @StaticportNo NVARCHAR(10);
DECLARE @ConnectionportNo INT;
-- Look at the port for the current connection
SELECT @ConnectionportNo = [local_tcp_port]
FROM sys.dm_exec_connections
WHERE session_id = @@spid;
-- Look for the port being used in the server's registry
EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
,@key =
'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
,@value_name = 'TcpDynamicPorts'
,@value = @DynamicportNo OUTPUT
EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE'
,@key =
'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll'
,@value_name = 'TcpPort'
,@value = @StaticportNo OUTPUT
SELECT [PortsUsedByThisConnection] = @ConnectionportNo
,[ServerStaticPortNumber] = @StaticportNo
,[ServerDynamicPortNumber] = @DynamicportNo
GO
Voici un rapide script PowerShell (car personne n’a encore fourni de solution dans PowerShell :))
Ceci affiche le numéro de port exact, par exemple: " Sql Server écoute sur le port: 1433 "
$id = (ps "sql*" | ? {$_.ProcessName -eq "sqlservr"}).Id
$strAllSQLConnections = netstat -ano | findstr $id
$port = $strAllSQLConnections | % { if($_ -match "0\.0\.0\.0:\d{2,5}") {$Matches[0]} }
$port = ($port -split ':')[1]
cls
Write-Host "Sql Server is listening on port: " $port
Cela fonctionne très bien pour moi, je suis heureux pour quiconque d'étendre le code pour ajouter des fonctionnalités. HTH
essayez une fois: -
USE master
DECLARE @portNumber NVARCHAR(10)
EXEC xp_instance_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key =
'Software\Microsoft\Microsoft SQL Server\MSSQLServer\SuperSocketNetLib\Tcp\IpAll',
@value_name = 'TcpDynamicPorts',
@value = @portNumber OUTPUT
SELECT [Port Number] = @portNumber
GO
SQL Server 2000 Programmes | MS SQL Server | Utilitaire réseau client | Sélectionnez TCP_IP puis Propriétés
SQL Server 2005 Programmes | SQL Server | Gestionnaire de configuration SQL Server | Sélectionnez Protocols for MSSQLSERVER ou sélectionnez Client Protocols et cliquez avec le bouton droit sur TCP/IP.
select * from sys.dm_tcp_listener_states
PowerShell au format Nice et permettant de distinguer les processus:
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
}
Sortie par défaut: