Jak znaleźć działający port SQL Server?

94

Tak, przeczytałem. Jak znaleźć port dla MS SQL Server 2008?

brak szczęścia.

telnet 1433

zwraca połączenie nie powiodło się, więc muszę określić inny port.

Próbowałem użyć

netstat -abn

ale nie widzę sqlservr.exe ani czegoś podobnego na tej liście.

Dlaczego tak trudno jest znaleźć ten port? : /

keram
źródło
Czy sprawdziłeś, czy usługa Sql Server jest uruchomiona?
Pilgerstorfer Franz,

Odpowiedzi:

76

bardzo prosty. zanotuj identyfikator PID programu sqlsrvr.exe z menedżera zadań, a następnie uruchom następujące polecenie:

netstat -ano | findstr *PID*

pokaże połączenia TCP i UDP twojego serwera SQL (w tym porty) standard to 1433 dla TCP i 1434 dla UDP

przykład: wprowadź opis obrazu tutaj

mantas mileris
źródło
3
To zadziałało dla mnie "na odwrót": potrzebne do znalezienia (nie domyślnego) numeru portu maszyny zdalnej, z którą byłem połączony w SSMS.
leqid
57

To jest ten, który działa dla mnie:

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL 
Stefan Steiger
źródło
39

Jeśli możesz uruchomić Menedżera konfiguracji serwera Sql> Konfiguracja sieci programu SQL Server> Twoje wystąpienie> TCP / IP> Właściwości

wprowadź opis obrazu tutaj

abedurftig
źródło
8

Jeśli uruchomiłeś "netstat -a -b -n" (z wiersza poleceń z podwyższonym poziomem uprawnień) i nie widzisz w ogóle "sqlservr.exe", oznacza to, że usługa SQL Server nie jest uruchomiona lub jej biblioteka sieciowa TCP / IP jest niepełnosprawny.

Uruchom Menedżera konfiguracji programu SQL Server (Start | Wszystkie programy | Microsoft SQL Server 2008 | Narzędzia konfiguracyjne).

Przejdź do usług SQL Server. W prawym okienku poszukaj SQL Server (). Czy to się zatrzymało? Jeśli tak, zacznij.

Przejdź do SQL Server Network Configuration (lub SQL Server Network Configuration (32-bit), odpowiednio), a następnie Protocols for. W prawym okienku poszukaj „TCP / IP”. Czy to jest wyłączone? Jeśli tak, włącz ją, a następnie uruchom ponownie usługę SQL Server.

Zauważ, że ID instancji będzie MSSQLSERVER dla domyślnej instancji.

Należy również pamiętać, że nie musisz włączać biblioteki sieciowej TCP / IP, aby połączyć klienta z usługą. Klienci mogą również łączyć się za pośrednictwem biblioteki sieciowej pamięci współużytkowanej (jeśli klient znajduje się na tym samym komputerze) lub biblioteki sieciowej potoków nazwanych.

Greenstone Walker
źródło
3

Może nie używa protokołu TCP / IP

Przyjrzyj się Menedżerowi konfiguracji programu SQL Server, aby zobaczyć, jakich protokołów używa.

podiluska
źródło
Konfiguracja klienta macierzystego SQL? TCP / IP jest włączony. Ale domyślny port jest ustawiony na 1433: /
keram
@keram Nie - to dla klientów. Chcesz narzędzia do konfiguracji serwera.
podiluska
gdzie mogę znaleźć tę konfigurację?
keram
2

W naszym przedsiębiorstwie nie mam dostępu do serwera MSSQL, więc nie mogę uzyskać dostępu do tabel systemowych.

U mnie działa:

  1. przechwytywanie ruchu sieciowego Wireshark(uruchom jako Administrator, wybierz Interfejs sieciowy), podczas otwierania połączenia z serwerem.
  2. Znajdź adres IP za pomocą ping
  3. filtruj za pomocą ip.dst == x.x.x.x

Port jest pokazany w kolumnie infow formaciesrc.port -> dst.port

fbehrens
źródło
2

Oto kolejny skrypt, którego używam:

-- 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
źródło
1

Spróbuj włączyć protokół przez: Menedżer konfiguracji > Serwer SQL Konfiguracja sieci > Protokoły dla MSSQLSERVER > właściwości TCP / IP

Jagoda
źródło
1

spróbuj raz: -

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
źródło
0

Programy SQL Server 2000 | MS SQL Server | Narzędzie sieciowe klienta | Wybierz TCP_IP, a następnie Właściwości

Programy SQL Server 2005 | SQL Server | Menedżer konfiguracji programu SQL Server | Wybierz Protocols for MSSQLSERVER lub wybierz Client Protocols i kliknij prawym przyciskiem myszy TCP / IP

Donna Collins
źródło
0
select * from sys.dm_tcp_listener_states 

Więcej tam: 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
źródło
Opisz swoją odpowiedź.
Harsh Wardhan
Chociaż ten link może pomóc w odpowiedzi na pytanie, możesz poprawić tę odpowiedź, biorąc istotne części linku i umieszczając je w swojej odpowiedzi, dzięki temu Twoja odpowiedź będzie nadal odpowiedzią, jeśli link zostanie zmieniony lub usunięty :)
WhatsThePoint
0

Inną opcją może być odczytanie rejestru systemu Windows. Używając PowerShell możesz zrobić coś takiego:

#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."

wprowadź opis obrazu tutaj Upewnij się, że ten skrypt PowerShell jest uruchamiany na serwerze hosta (który obsługuje Twoje wystąpienie SQL / instalację programu SQL Server), co oznacza, że ​​musisz najpierw uruchomić RDP na serwerze SQL / Box / VM, a następnie uruchomić ten kod.

HTH

Eddie Kumar
źródło