Jak znaleźć port dla MS SQL Server 2008?


107

Używam MS SQL Server 2008 na moim komputerze lokalnym. Wiem, że domyślny port to 1433 ale trochę jak nie nasłuchuje na tym porcie. SQL jest wersją Express.

Wypróbowałem już dziennik, SQL Server Management Studio, rejestr i rozszerzoną procedurę składowaną w celu znalezienia portu. Ale nie mogłem go znaleźć. Proszę pomóż mi. Dzięki.


Aktualizuję pytanie o inne zasoby, które przeglądałem, aby mieć ich zakładki i inne osoby również mogą z nich korzystać. blogs.msdn.com/sql_protocols/archive/2008/11/05/… decipherinfosys.wordpress.com/2008/01/02/… dumbledad.wordpress.com/2008/07/09/…
royalghost

Używam widoku TCP View, aby zobaczyć port, na którym działa. Zaskoczyło mnie, że serwer przyjmuje port dynamiczny zamiast 1433, nawet po zainstalowaniu go jako instancji domyślnej. Odinstalowałem również edycję ekspresową i zainstalowałem pełną wersję, po czym tylko ja widzę proces jako sqlservr.exe: 5272. I zakładam, że nasłuchuje na porcie 5272.
royalghost

Odpowiedzi:


140

Kliknij Startprzycisk w systemie Windows. Iść doAll Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Kliknij SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP dwukrotnie (wybierz prawym przyciskiem myszy Properties) na TCP/IP.

Znajdziesz Default Port 1433.

W zależności od połączenia numer portu może się różnić.


Na moim komputerze z systemem Windows 10 i zainstalowanym programem SQL Server 2012 Express Menedżer konfiguracji programu SQL Server nie jest wyświetlany w menu Start systemu Windows, ale można go znaleźć w przystawce MMC Zarządzanie komputerem w grupie Usługi i aplikacje . Port dynamiczny również nie znajduje się w pozycji „Konfiguracja rodzimego klienta SQL” (która jest dla mnie wersją „11.0”), ale w elemencie konfiguracji sieci SQL Server (i na karcie Adresy IP okna właściwości protokołu TCP / IP pod adresem na samym dole, w ustawieniu TCP Dynamic Ports ).
Kenny Evitt

Ta odpowiedź odnosi się do portu klienta, a nie portu serwera, o który pytano w pierwotnym pytaniu. Odpowiedź od @ Brothers28 poniżej jest dokładniejsza.
Slogmeister Extraordinaire

52

Możesz również spojrzeć z rozszerzeniem

netstat -abn

Daje porty z odpowiednią aplikacją, która utrzymuje je otwarte.

Edit : lub TCPView .


Czy możesz mi powiedzieć, pod jaką nazwą nazywa się MS SQL Server 2008 jako aplikacja?
royalghost

2
Powinien to być sqlservr.exe (chociaż nie mam go do sprawdzenia).
rslite

1
To zadziałało dla mnie. Numer portu znajduje się w linii powyżej [sqlservr.exe].
Zane,

Znalazłem go pod Ssms.exe
ThiagoPonte

49

Oto 5 metod, które znalazłem:

  • Metoda 1: Menedżer konfiguracji programu SQL Server
  • Metoda 2: Przeglądarka zdarzeń systemu Windows
  • Metoda 3: Dzienniki błędów programu SQL Server
  • Metoda 4: sys.dm_exec_connections DMV
  • Metoda 5: Odczytywanie rejestru przy użyciu xp_instance_regread

Metoda 4: sys.dm_exec_connections DMV
Myślę, że jest to prawie najłatwiejszy sposób ... DMV
zwracają stan serwera, którego można użyć do monitorowania wystąpienia SQL Server. Możemy użyć sys.dm_exec_connections DMV do zidentyfikowania numeru portu, na którym nasłuchuje wystąpienie SQL Server, używając poniższego kodu T-SQL:

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

Result Set:
local_tcp_port
61499

(1 row(s) affected)

Metoda 1: Menedżer konfiguracji programu SQL Server

Krok 1. Kliknij Start> Wszystkie programy> Microsoft SQL Server 2012> Narzędzia konfiguracyjne> Menedżer konfiguracji programu SQL Server

Krok 2. Przejdź do SQL Server Configuration Manager> SQL Server Network Configuration> Protocols for

Krok 3. Kliknij prawym przyciskiem myszy TCP / IP i wybierz Właściwości

wprowadź opis obrazu tutaj

Krok 4. W oknie dialogowym Właściwości protokołu TCP / IP przejdź do zakładki Adresy IP i przewiń w dół do grupy IPAll.

wprowadź opis obrazu tutaj

Jeśli SQL Server jest skonfigurowany do pracy na porcie statycznym, będzie dostępny w polu tekstowym TCP Port, a jeśli jest skonfigurowany na porcie dynamicznym, to bieżący port będzie dostępny w polu tekstowym TCP Dynamic Ports. Tutaj moja instancja nasłuchuje na porcie o numerze 61499.

Inne metody można znaleźć tutaj: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/


1
Pracował dla mnie. Wypróbowałem właściwości TCP / IP w SQL Native Client Configuration i zwróciło to domyślne 1433. Ale kiedy sprawdziłem porty TCP Dynamic z SQL Server Network Configuration. Znalazłem port 67244. I po tym udało mi się z powodzeniem połączyć się z tym portem. +1
Reuben

17

Natknąłem się na to, ponieważ miałem tylko problemy z utworzeniem zdalnego połączenia i nie mogłem zrozumieć, dlaczego ustawienie portu 1433 w zaporze nie działa. Wreszcie mam teraz pełny obraz, więc pomyślałem, że powinienem się nim podzielić.

Przede wszystkim należy włączyć „TCP / IP” za pomocą SQL Server Configuration Manager w obszarze Protocols for SQLEXPRESS!

Gdy używana jest nazwana instancja (w tym przypadku „SQLExpress”), nasłuchuje ona na porcie dynamicznym. Aby znaleźć ten dynamiczny port, masz kilka opcji; aby wymienić tylko kilka:

  • sprawdzenie ERRORLOGSQL Server znajdującego się w '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'(wewnątrz znajduje się linia podobna do tej: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"-> więc 51118 jest w tym przypadku portem dynamicznym.

  • sprawdzanie rejestru: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAlldla mojego przypadku TcpDynamicPorts=51118.

    Edycja : {MSSQL instance name}to coś w rodzaju:, MSSQL10_50.SQLEXPRESSnie tylkoSQLEXPRESS

Oczywiście, zezwolenie na ten port TCP w zaporze i utworzenie zdalnego połączenia przez podanie: "x.x.x.x,51118"(gdzie xxxx to adres IP serwera) już w tym momencie rozwiązuje problem.

Ale potem chciałem połączyć się zdalnie, podając nazwę instancji (np: x.x.x.x\SQLExpress .:). Wtedy do gry wkracza usługa SQL Browser. Jest to jednostka tłumacząca nazwę instancji na port 51118. Usługa SQL Browser nasłuchuje na porcie UDP 1434 (standardowym i statycznym), więc musiałem zezwolić na to również w zaporze serwera.

Aby nieco rozszerzyć właściwą odpowiedź: jeśli ktoś nie lubi dynamicznych portów i chce statycznego portu dla swojej instancji SQL Server, powinien spróbować tego linku .


1
+1 dla usługi przeglądarki SQL. To jest klucz do tego, jak SQL Express działa z numerami portów
peterG

11

W dzienniku ERROLOG dla linii jak poniżej. Jeśli go nie widzisz, SQL Server nie obsługuje dostępu zdalnego lub po prostu nie działa przez TCP. Możesz to zmienić za pomocą SQL Server Configuration Manager.

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

Nie widzę tego dziennika, ale w programie SQL Server Management Studio w obszarze Połączenia „Zezwalaj na połączenia zdalne z tym serwerem” jest zaznaczone. Dlatego rozumiem, że połączenie zdalne jest dozwolone.
royalghost

@royal: Oprócz „zezwalania na zdalne połączenia” musisz także włączyć protokół TCP. W tej chwili serwer prawdopodobnie słucha tylko NP
Remusa Rusanu

zobacz odpowiedź poniżej z @morteza, aby odczytać dziennik za pomocą zapytania SQL xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

8

Rozwiązałem problem, włączając TCP / IP za pomocą SQL Server Configuration Manager w Protocols for SQLEXPRESS2008, zrestartowałem usługę i teraz w pliku ERRORLOG pojawia się komunikat „Serwer nasłuchuje”


8

Spróbuj tego (wymaga dostępu do sys.dm_exec_connections):

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

3
FYI: jeśli serwer SQL nie ma otwartego połączenia, prawdopodobnie nic nie pokaże.
Tilo,

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

[Zidentyfikuj port używany przez nazwane wystąpienie aparatu bazy danych programu SQL Server, odczytując dzienniki błędów programu SQL Server]


1
dzięki dobra wskazówka Morteza, pojawia się błąd podczas używania powyższego na SQL2012, ale do moich potrzeb wystarczają następujące: XP_READERRORLOG 0, 1, N'Server nasłuchuje '
Mattpm

Skopiuj ten błąd w zapytaniu, ale to działa, xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

6

Możesz użyć tych dwóch poleceń: tasklistinetstat -oan

Tasklist.exejest jak taskmgr.exeale w trybie tekstowym.

Za pomocą tasklist.exelub taskmgr.exemożna uzyskać PIDsqlservr.exe

Za pomocą netstat -oanpokazuje PID połączenia i możesz go filtrować.

Przykład:

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

W tym przykładzie port SQLServer to 1280

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


5

Używam następującego skryptu w 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

Nie jestem pewien, dlaczego zostało to odrzucone, nie daje natychmiastowej odpowiedzi, ale daje odpowiedź plus o wiele więcej. Dodając to do mojej listy przydatnych zapytań.
Tony,

bardzo lubi zapytanie, ale również wydaje się, że nie pokazuje, jeśli żadne połączenie nie jest otwarte / nawiązane.
Tilo

4

Można to również zrobić poprzez skanowanie portów, które jest jedyną możliwą metodą, jeśli nie masz dostępu administratora do zdalnego serwera.

Użycie Nmapa ( http://nmap.org/zenmap/ ) do wykonania „Intensywnego skanowania TCP” da takie wyniki dla wszystkich instancji na serwerze:

[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

Ważna uwaga: Aby przeprowadzić test za pomocą analizatora zapytań lub MS SQL Server Management Studio, musisz utworzyć nazwę serwera i port inaczej niż normalnie łączysz się z portem, na przykład przez HTTP, używając przecinka zamiast dwukropka .

  • Nazwa serwera Management Studio: 10.0.0.1,49843
  • Ciąg połączenia: Data Source=10.0.0.1,49843

jednak

  • Parametry połączenia JDBC: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

1

To działa dla SQL Server 2005 - 2012. Spójrz na id = 26022 zdarzeń w dzienniku błędów pod zastosowań. To pokaże numer portu serwera sql, a także adresy IP, do których można uzyskać dostęp.


1

Oprócz tego, co zostało wymienione powyżej, musiałem włączyć zarówno porty TCP, jak i UDP, aby SQLExpress łączył się zdalnie. Ponieważ mam trzy różne wystąpienia na moim komputerze deweloperskim, włączam 1430-1435zarówno protokół TCP, jak i UDP.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.