Wie finde ich den Port für MS SQL Server 2008?

107

Ich führe MS SQL Server 2008 auf meinem lokalen Computer aus. Ich weiß, dass der Standardport 1433 ist, aber einige, wie er an diesem Port nicht lauscht. Die SQL ist eine Express-Edition.

Ich habe bereits das Protokoll, SQL Server Management Studio, die Registrierung und die erweiterte gespeicherte Prozedur zum Auffinden des Ports ausprobiert. Aber ich konnte es nicht finden. Bitte hilf mir. Vielen Dank.

Royalghost
quelle
Ich aktualisiere die Frage mit anderen Ressourcen, die ich mir angesehen habe, damit ich Lesezeichen von ihnen habe und andere sie auch verwenden können. blogs.msdn.com/sql_protocols/archive/2008/11/05/… decipherinfosys.wordpress.com/2008/01/02/… dumbledad.wordpress.com/2008/07/09/…
royalghost
Ich verwende die TCP-Ansicht, um den Port zu sehen, an dem sie ausgeführt wird. Ich bin überrascht zu sehen, dass der Server auch nach der Installation als Standardinstanz einen dynamischen Port anstelle von 1433 verwendet. Ich habe auch die Express Edition deinstalliert und die vollständige Edition installiert. Danach kann nur ich den Prozess als sqlservr.exe: 5272 sehen. Und ich gehe davon aus, dass es an Port 5272 lauscht.
Royalghost

Antworten:

139

Klicken Sie Startin Windows auf die Schaltfläche. Gehe zuAll Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Klicken Sie auf SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP Doppelklick (Rechtsklick auswählen Properties) auf TCP/IP.

Sie werden finden Default Port 1433.

Je nach Verbindung kann die Portnummer variieren.

UdayKiran Pulipati
quelle
Auf meinem Computer unter Windows 10 und mit installiertem SQL Server 2012 Express ist SQL Server Configuration Manager nicht im Windows-Startmenü aufgeführt, sondern befindet sich im MMC-Snap-In für die Computerverwaltung unter der Gruppe Dienste und Anwendungen . Der dynamische Port befindet sich auch nicht unter dem Element "SQL native Client-Konfiguration" (für mich Version "11.0"), sondern unter dem Element " SQL Server-Netzwerkkonfiguration" (und auf der Registerkarte " IP-Adressen" des Fensters "Eigenschaften des TCP / IP- Protokolls" unter ganz unten in der Einstellung TCP Dynamic Ports ).
Kenny Evitt
Diese Antwort bezieht sich auf den Client-Port, nicht auf den Server-Port, der in der ursprünglichen Frage gestellt wird. Die Antwort von @ Brothers28 unten ist genauer.
Slogmeister Extraordinaire
52

Sie könnten auch mit einem schauen

netstat -abn

Es gibt den Ports die entsprechende Anwendung, die sie offen hält.

Bearbeiten : oder TCPView .

rslite
quelle
Können Sie mir mitteilen, unter welchem ​​Namen MS SQL Server 2008 als Anwendung benannt ist?
Royalghost
2
Es sollte sqlservr.exe sein (ich muss jedoch keine überprüfen).
Rslite
1
Das hat bei mir funktioniert. Die Portnummer befindet sich in der Zeile über [sqlservr.exe].
Zane
Ich fand es unter Ssms.exe
ThiagoPonte
49

Hier sind 5 Methoden, die ich gefunden habe:

  • Methode 1: SQL Server Configuration Manager
  • Methode 2: Windows-Ereignisanzeige
  • Methode 3: SQL Server-Fehlerprotokolle
  • Methode 4: sys.dm_exec_connections DMV
  • Methode 5: Lesen der Registrierung mit xp_instance_regread

Methode 4: sys.dm_exec_connections DMV
Ich denke, dies ist fast der einfachste Weg ...
DMVs geben den Serverstatus zurück, der zur Überwachung der SQL Server-Instanz verwendet werden kann. Wir können sys.dm_exec_connections DMV verwenden, um die Portnummer zu identifizieren, die die SQL Server-Instanz mithilfe des folgenden T-SQL-Codes abhört :

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

Result Set:
local_tcp_port
61499

(1 row(s) affected)

Methode 1: SQL Server Configuration Manager

Schritt 1. Klicken Sie auf Start> Alle Programme> Microsoft SQL Server 2012> Konfigurationstools> SQL Server Configuration Manager

Schritt 2. Gehen Sie zu SQL Server Configuration Manager> SQL Server-Netzwerkkonfiguration> Protokolle für

Schritt 3. Klicken Sie mit der rechten Maustaste auf TCP / IP und wählen Sie Eigenschaften

Geben Sie hier die Bildbeschreibung ein

Schritt 4. Wechseln Sie im Dialogfeld TCP / IP-Eigenschaften zur Registerkarte IP-Adressen und scrollen Sie nach unten zur Gruppe IPAll.

Geben Sie hier die Bildbeschreibung ein

Wenn SQL Server für die Ausführung an einem statischen Port konfiguriert ist, ist es im Textfeld "TCP-Port" verfügbar. Wenn es am dynamischen Port konfiguriert ist, ist der aktuelle Port im Textfeld "Dynamische TCP-Ports" verfügbar. Hier lauscht meine Instanz auf Portnummer 61499.

Die anderen Methoden finden Sie hier: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/

Brüder28
quelle
1
Hat für mich gearbeitet. Ich habe die TCP / IP-Eigenschaften der SQL Native Client-Konfiguration ausprobiert und dabei den Standardwert 1433 zurückgegeben. Als ich jedoch die dynamischen TCP-Ports in der SQL Server-Netzwerkkonfiguration überprüft habe. Ich fand, dass der Port 67244 ist. Danach konnte ich erfolgreich eine Verbindung zu diesem Port herstellen. +1
Reuben
17

Ich bin darauf gestoßen, weil ich gerade Probleme beim Erstellen einer Remoteverbindung hatte und nicht verstehen konnte, warum das Einrichten des 1433-Ports in der Firewall nicht funktioniert. Ich habe jetzt endlich das ganze Bild, also dachte ich, ich sollte es teilen.

Zuallererst ist es ein Muss, "TCP / IP" mit dem SQL Server Configuration Manager unter Protokolle für SQLEXPRESS zu aktivieren!

Wenn eine benannte Instanz verwendet wird (in diesem Fall "SQLExpress"), überwacht dies einen dynamischen Port. Um diesen dynamischen Port zu finden, haben Sie mehrere Möglichkeiten. um ein paar zu nennen:

  • Überprüfung ERRORLOGvon SQL Server in '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'(im Inneren finden Sie eine Zeile ähnlich der folgenden: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"-> 51118 ist in diesem Fall der dynamische Port.

  • Überprüfung der Registrierung : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAll, für meinen Fall TcpDynamicPorts=51118.

    Edit : {MSSQL instance name}ist so etwas wie: MSSQL10_50.SQLEXPRESSnicht nurSQLEXPRESS

Wenn Sie diesen TCP-Port in der Firewall zulassen und eine Remoteverbindung herstellen, indem Sie Folgendes übergeben: "x.x.x.x,51118"(wobei xxxx die Server-IP ist), wird dies bereits zu diesem Zeitpunkt behoben.

Aber dann wollte ich eine Remoteverbindung herstellen, indem ich den Instanznamen übergab (zB :) x.x.x.x\SQLExpress. Dies ist der Zeitpunkt, an dem der SQL Browser-Dienst ins Spiel kommt. Dies ist die Einheit, die den Instanznamen in den 51118-Port auflöst. Der SQL Browser-Dienst überwacht den UDP-Port 1434 (Standard und statisch), daher musste ich dies auch in der Firewall des Servers zulassen.

Um die eigentliche Antwort ein wenig zu erweitern: Wenn jemand anderes keine dynamischen Ports mag und einen statischen Port für seine SQL Server-Instanz möchte, sollte dieser Link verwendet werden .

Lerner
quelle
1
+1 für SQL Browser-Dienst. Dies ist der Schlüssel zur Funktionsweise von SQL Express mit Portnummern
peterG
11

Im ERROLOG-Protokoll für eine Zeile wie unten. Wenn Sie es nicht sehen, ist der SQL Server nicht für den Remotezugriff aktiviert oder nur nicht über TCP. Sie können dies über den SQL Server Configuration Manager ändern.

Server is listening on [ 192.128.3.2 <ipv4> 1433].
mrdenny
quelle
Ich sehe dieses Protokoll nicht, aber im SQL Server Management Studio unter Verbindungen ist "Remoteverbindungen zu diesem Server zulassen" aktiviert. Daher verstehe ich, dass die Fernverbindung zulässig ist.
Royalghost
@royal: Zusätzlich zu 'Remoteverbindungen zulassen' müssen Sie auch das TCP-Protokoll aktivieren. Im Moment hört der Server wahrscheinlich nur NP
Remus Rusanu
Siehe Antwort unten von @morteza, um das Protokoll per SQL-Abfrage zu lesen xp_readerrorlog 0, 1, N'Server is listening on'
Tilo
8

Ich habe das Problem gelöst, indem ich TCP / IP mit dem SQL Server Configuration Manager unter Protokolle für SQLEXPRESS2008 aktiviert habe. Ich habe den Dienst neu gestartet und jetzt wird in der ERRORLOG-Datei "Server lauscht" angezeigt

Lepez
quelle
8

Versuchen Sie dies (erfordert Zugriff auf sys.dm_exec_connections):

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL
Tilo
quelle
3
Zu Ihrer Information: Wenn der SQL Server keine offene Verbindung hat, wird wahrscheinlich nichts angezeigt.
Tilo
6
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[Identifizieren des von der benannten Instanz des SQL Server-Datenbankmoduls verwendeten Ports durch Lesen der SQL Server-Fehlerprotokolle]

Morteza
quelle
1
danke guter Tipp Morteza, ich erhalte einen Fehler bei der Verwendung des oben genannten unter SQL2012, aber Folgendes reicht für meine Anforderungen aus: XP_READERRORLOG 0, 1, N'Server hört zu
mattpm
Kopieren Sie, dass Fehler mit Ihrer Abfrage erhalten, aber dies funktioniert, xp_readerrorlog 0, 1, N'Server is listening on'
Tilo
6

Sie können diese beiden Befehle verwenden: tasklistundnetstat -oan

Tasklist.exeist wie taskmgr.exeaber im Textmodus.

Mit tasklist.exeoder können taskmgr.exeSie eine PID von erhaltensqlservr.exe

Mit netstat -oanwird eine Verbindungs-PID angezeigt, die Sie filtern können.

Beispiel:

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

In diesem Beispiel lautet der SQLServer-Port 1280

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

Demestrestalk
quelle
5

Ich verwende das folgende Skript in 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
Rubens
quelle
Ich bin mir nicht sicher, warum dies abgelehnt wurde, es gibt nicht die sofortige Antwort, aber es gibt Ihnen die Antwort und soooo viel mehr. Hinzufügen zu meiner Liste nützlicher Abfragen.
Tony
Wie die Abfrage sehr, scheint es auch nicht zu zeigen, ob keine Verbindung offen / hergestellt ist.
Tilo
4

Dies kann auch über einen Port-Scan erfolgen. Dies ist die einzig mögliche Methode, wenn Sie keinen Administratorzugriff auf einen Remote-Server haben.

Wenn Sie Nmap ( http://nmap.org/zenmap/ ) verwenden, um einen "intensiven TCP-Scan" durchzuführen, erhalten Sie für alle Instanzen auf dem Server folgende Ergebnisse :

[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

Wichtiger Hinweis: Zum Testen mit Query Analyzer oder MS SQL Server Management Studio müssen Sie Ihren Servernamen und Ihren Port anders bilden, als Sie normalerweise eine Verbindung zu einem Port herstellen würden, z. B. über HTTP, indem Sie anstelle eines Doppelpunkts ein Komma verwenden .

  • Name des Management Studio-Servers: 10.0.0.1,49843
  • Verbindungszeichenfolge: Data Source=10.0.0.1,49843

jedoch

  • JDBC-Verbindungszeichenfolge: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE
Shane
quelle
1

Dies funktioniert für SQL Server 2005 - 2012. Suchen Sie im Fehlerprotokoll unter Anwendungen nach Ereignis-ID = 26022. Daraufhin werden die Portnummer des SQL-Servers sowie die IP-Adressen angezeigt, auf die zugegriffen werden darf.

Mukus
quelle
1

Zusätzlich zu den oben aufgeführten Funktionen musste ich sowohl TCP- als auch UDP-Ports aktivieren, damit SQLExpress eine Remoteverbindung herstellen konnte. Da ich drei verschiedene Instanzen auf meinem Entwicklungscomputer habe, aktiviere ich 1430-1435sowohl TCP als auch UDP.

D. Davidson
quelle