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

Да, я читал этот Как найти порт для MS SQL Server 2008?

не повезло.

telnet 1433

возвращает соединение не удалось, поэтому я должна указать другой порт.

Я пытался использовать

команды netstat -АБН

но я не вижу sqlservr.exe или что-то подобное в этом списке.

Почему так трудно найти этот порт? :/

11 ответов


попробуйте это:

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/


очень удобно. запишите sqlsrvr.exe PID из taskmanager затем выполните следующую команду:

netstat -ano | findstr *PID*

он покажет TCP и UDP-соединения вашего SQL server (включая порты) стандарт 1433 для TCP и 1434 для UDP

пример : enter image description here


Это тот, который работает для меня:

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

Если вы можете запустить Диспетчер конфигурации Sql Server > конфигурация сети SQL Server > ваш экземпляр > TCP / IP > свойства

enter image description here


Если вы запустили "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 для подключения клиента к службе. Клиенты также могут подключаться через общую память сетевая библиотека (если клиент находится на том же компьютере) или сетевая библиотека именованных каналов.


возможно, он не использует TCP / IP

посмотрите на Диспетчер конфигурации SQL Server, чтобы узнать, какие протоколы он использует.


на нашем предприятии у меня нет доступа к серверу MSSQL, поэтому я могу получить доступ к системным таблицам.

что работает для меня:

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

порт отображается в столбце info в формате src.port -> dst.port


попробуйте включить протокол с помощью: Настройки Яслях>конфигурация сети SQL server> протоколы для MSSQLSERVER > свойства TCP / IP


SQL Server 2000 Запрограммированный| MS SQL Server | Клиентская Сетевая Утилита | Выберите TCP_IP, затем Properties

SQL Server 2005 Запрограммированный| SQL-сервер| Диспетчер конфигурации SQL Server | Выберите протоколы для MSSQLSERVER или выберите клиентские протоколы и щелкните правой кнопкой мыши TCP/IP


один раз попробовать:-

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

Это еще один скрипт, который я использую:

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