Wie finde ich den laufenden SQL Server-Port?

94

Ja, ich habe dies gelesen. Wie finde ich den Port für MS SQL Server 2008?

kein Glück.

Telnet 1433

Rückgabeverbindung fehlgeschlagen, daher muss ich einen anderen Port angeben.

Ich habe versucht zu benutzen

netstat -abn

aber ich sehe keine sqlservr.exe oder ähnliches auf dieser Liste.

Warum ist es so schwierig, diesen Hafen zu finden? : /

Keram
quelle
Haben Sie überprüft, ob der SQL Server- Dienst ausgeführt wird?
Pilgerstorfer Franz

Antworten:

76

sehr einfach. Notieren Sie sich die PID sqlsrvr.exe vom Task-Manager und führen Sie den folgenden Befehl aus:

netstat -ano | findstr *PID*

Es werden TCP- und UDP-Verbindungen Ihres SQL-Servers (einschließlich Ports) angezeigt. Der Standard ist 1433 für TCP und 1434 für UDP

Beispiel: Geben Sie hier die Bildbeschreibung ein

Mantas Mileris
quelle
3
Dies funktionierte bei mir "umgekehrt": Erforderlich, um die (nicht standardmäßige) Portnummer des Remote-Computers zu ermitteln, mit dem ich in SSMS verbunden war.
Leqid
57

Dies ist derjenige, der für mich funktioniert:

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL 
Stefan Steiger
quelle
39

Wenn Sie SQL Server Configuration Manager> SQL Server-Netzwerkkonfiguration> Ihre Instanz> TCP / IP> Eigenschaften starten können

Geben Sie hier die Bildbeschreibung ein

abedurftig
quelle
8

Wenn Sie "netstat -a -b -n" (an einer Eingabeaufforderung mit erhöhten Rechten) ausgeführt haben und "sqlservr.exe" überhaupt nicht sehen, wird entweder Ihr SQL Server-Dienst nicht ausgeführt oder seine TCP / IP-Netzwerkbibliothek behindert.

Führen Sie SQL Server Configuration Manager aus (Start | Alle Programme | Microsoft SQL Server 2008 | Konfigurationstools).

Navigieren Sie zu SQL Server Services. Suchen Sie im rechten Bereich nach SQL Server (). Ist es gestoppt? Wenn ja, starten Sie es.

Navigieren Sie zu SQL Server-Netzwerkkonfiguration (oder SQL Server-Netzwerkkonfiguration (32-Bit)) und dann zu Protokollen für. Suchen Sie im rechten Bereich nach "TCP / IP". Ist es deaktiviert? Wenn ja, aktivieren Sie es und starten Sie den SQL Server-Dienst neu.

Beachten Sie, dass die Instanz-ID für die Standardinstanz MSSQLSERVER ist.

Beachten Sie außerdem, dass Sie die TCP / IP-Netzwerkbibliothek nicht aktivieren müssen, um einen Client mit dem Dienst zu verbinden. Clients können auch über die Shared Memory-Netzwerkbibliothek (wenn sich der Client auf demselben Computer befindet) oder die Named Pipes-Netzwerkbibliothek eine Verbindung herstellen.

Greenstone Walker
quelle
3

Möglicherweise wird kein TCP / IP verwendet

Sehen Sie sich den SQL Server Configuration Manager an, um zu sehen, welche Protokolle er verwendet.

podiluska
quelle
SQL Native Client Konfiguration? TCP / IP ist aktiviert. Aber Standardport ist auf 1433 eingestellt: /
Keram
@keram Nein - das ist für Kunden. Sie möchten die Serverkonfiguration nutzen.
Podiluska
Wo finde ich diese Konfiguration?
Keram
2

In unserem Unternehmen habe ich keinen Zugriff auf MSSQL Server, daher kann ich nicht auf die Systemtabellen zugreifen.

Was für mich funktioniert ist:

  1. Erfassen Sie den Netzwerkverkehr Wireshark(als Administrator ausführen, Netzwerkschnittstelle auswählen), während Sie die Verbindung zum Server herstellen.
  2. Finden Sie die IP-Adresse mit ping
  3. filtern mit ip.dst == x.x.x.x

Der Port wird in der Spalte infoim Format angezeigtsrc.port -> dst.port

fbehrens
quelle
2

Dies ist ein weiteres Skript, das ich verwende:

-- 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
Jim Pierce
quelle
1

Versuchen Sie, das Protokoll zu aktivieren, indem Sie: Konfigurationsmanager > SQL Server-Netzwerkkonfiguration > Protokolle für MSSQLSERVER > Eigenschaften von TCP / IP verwenden

Beere
quelle
1

Versuch es einmal:-

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
Krishna Dhakate
quelle
0

SQL Server 2000-Programme | MS SQL Server | Client-Netzwerkdienstprogramm | Wählen Sie TCP_IP und dann Eigenschaften

SQL Server 2005-Programme | SQL Server | SQL Server Configuration Manager | Wählen Sie Protokolle für MSSQLSERVER oder Client-Protokolle und klicken Sie mit der rechten Maustaste auf TCP / IP

Donna Collins
quelle
0
select * from sys.dm_tcp_listener_states 

Mehr dazu: https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-tcp-listener-states-transact-sql?view=sql-server -2017

Vladimir Bashutin
quelle
Bitte erläutern Sie Ihre Antwort.
Harsh Wardhan
Während dieser Link bei der Beantwortung der Frage hilfreich sein kann, können Sie diese Antwort verbessern, indem Sie wichtige Teile des Links in Ihre Antwort einfügen. Dadurch wird sichergestellt, dass Ihre Antwort immer noch eine Antwort ist, wenn der Link geändert oder entfernt wird :)
WhatsThePoint
0

Eine andere Möglichkeit könnte darin bestehen, die Windows-Registrierung zu lesen. Mit PowerShell können Sie Folgendes tun:

#Get SQL instance's Port number using Windows Registry:
$instName = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances[0]
$tcpPort = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instName\MSSQLServer\SuperSocketNetLib\Tcp").TcpPort
Write-Host The SQL Instance:  `"$instName`"  is listening on `"$tcpPort`"  "TcpPort."

Geben Sie hier die Bildbeschreibung ein Stellen Sie sicher, dass Sie dieses PowerShell-Skript auf dem Host-Server ausführen (der Ihre SQL-Instanz / SQL Server-Installation hostet). Dies bedeutet, dass Sie zuerst RDP in SQL Server / Box / VM ausführen und dann diesen Code ausführen müssen.

HTH

Eddie Kumar
quelle