Як знайти запущений порт SQL Server?


94

Так, я прочитав це Як знайти порт для MS SQL Server 2008?

нещастить.

телнет 1433

повертає помилку підключення, тому я повинен вказати інший порт.

Я намагався використовувати

netstat -abn

але я не бачу sqlservr.exe чи щось подібне у цьому списку.

Чому так важко знайти цей порт? : /


Чи перевіряли ви, чи працює служба Sql Server ?
Pilgerstorfer Franz

Відповіді:


148

Спробуйте це:

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/


13
повертає 0 уражених рядків
keram

1
чи спробував ти використати майстер db і запустити це
AnandPhadke

3
Якщо повертається 0 рядків, TCP / IP вимкнено. Увімкнено TCP / IP у диспетчері конфігурацій SQL Server.
Тимо

76

дуже просто. занотуйте PID sqlsrvr.exe від taskmanager, а потім виконайте цю команду:

netstat -ano | findstr *PID*

він покаже з'єднання TCP та UDP вашого SQL-сервера (включаючи порти), стандарт - 1433 для TCP та 1434 для UDP

приклад: введіть тут опис зображення


3
Це спрацювало для мене "в зворотному порядку": потрібно було знайти (не за замовчуванням) номер порту віддаленої машини, до якої я був підключений в SSMS.
leqid


39

Якщо ви можете запустити диспетчер конфігурації сервера Sql> Конфігурація мережі SQL Server> Ваш екземпляр> TCP / IP> Властивості

введіть тут опис зображення


8

Якщо ви запустили "netstat -a -b -n" (з командного рядка з підвищеним рівнем) і взагалі не бачите "sqlservr.exe", тоді або не працює служба SQL Server, або її мережева бібліотека TCP / IP інваліди.

Запустіть диспетчер конфігурацій SQL Server (Пуск | Усі програми | Microsoft SQL Server 2008 | Інструменти конфігурації).

Перейдіть до служб SQL Server. На правій панелі знайдіть SQL Server (). Це зупинено? Якщо так, почніть.

Перейдіть до Конфігурація мережі SQL Server (або Конфігурація мережі SQL Server (32-розрядна) відповідно), а потім Протоколи для. На правій панелі знайдіть "TCP / IP". Це відключено? Якщо так, увімкніть його, а потім перезапустіть службу SQL Server.

Зверніть увагу, що він буде ідентифікатором екземпляра MSSQLSERVER для екземпляра за замовчуванням.

Також зверніть увагу, що вам не потрібно вмикати мережеву бібліотеку TCP / IP для підключення клієнта до служби. Клієнти також можуть підключатися через мережеву бібліотеку спільної пам'яті (якщо клієнт на тій самій машині) або мережеву бібліотеку Named Pipes.


3

Можливо, це не використання TCP / IP

Погляньте на диспетчер конфігурацій SQL Server, щоб побачити, які протоколи він використовує.


Конфігурація власного клієнта SQL? TCP / IP увімкнено. Але за замовчуванням для порту встановлено 1433: /
keram

@keram Ні - це для клієнтів. Ви хочете використовувати конфігурацію сервера.
podiluska

де я можу знайти цю конфігурацію?
keram


2

На нашому підприємстві я не маю доступу до MSSQL Server, тому я не можу отримати доступ до системних таблиць.

Що для мене працює:

  1. захоплювати мережевий трафік Wireshark(запускати від імені адміністратора, вибрати Мережевий інтерфейс), одночасно відкриваючи підключення до сервера.
  2. Знайдіть ip-адресу за допомогою ping
  3. фільтр за допомогою ip.dst == x.x.x.x

Порт відображається у стовпці infoу форматіsrc.port -> dst.port


2

Це ще один сценарій, який я використовую:

-- 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

1

Спробуйте увімкнути протокол, скориставшись: Конфігураційним менеджером > Конфігурація мережі SQL сервера > Протоколи для MSSQLSERVER > властивості TCP / IP


1

спробуйте один раз: -

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

0

Програми SQL Server 2000 | MS SQL Server | Утиліта клієнтської мережі | Виберіть TCP_IP, а потім Властивості

Програми SQL Server 2005 | SQL Server | Менеджер конфігурацій SQL Server | Виберіть Протоколи для MSSQLSERVER або виберіть Клієнтські протоколи та клацніть правою кнопкою миші на TCP / IP


0

Обґрунтуйте свою відповідь.
Harsh Wardhan

Хоча це посилання може допомогти у вашій відповіді на запитання, ви можете покращити цю відповідь, взявши життєво важливі частини посилання та помістивши його у свою відповідь. Це гарантує, що ваша відповідь все ще є відповіддю, якщо посилання буде змінено або видалено :)
WhatsThePoint

0

Іншими варіантами може бути читання реєстру Windows. За допомогою PowerShell ви можете зробити щось подібне:

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

введіть тут опис зображення Переконайтеся, що цей сценарій PowerShell запущений на хост-сервері (на якому розміщено ваш екземпляр SQL / інсталяцію SQL Server), що означає, що вам потрібно спочатку ввести RDP у SQL Server / Box / VM, а потім запустити цей код.

HTH

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.