Как найти запущенный порт 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
пример :
Это тот, который работает для меня:
SELECT DISTINCT
local_tcp_port
FROM sys.dm_exec_connections
WHERE local_tcp_port IS NOT NULL
Если вы можете запустить Диспетчер конфигурации Sql Server > конфигурация сети SQL Server > ваш экземпляр > TCP / IP > свойства
Если вы запустили "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, поэтому я могу получить доступ к системным таблицам.
что работает для меня:
- захват сетевого трафика
Wireshark
(Запуск от имени администратора, выберите сетевой интерфейс), при открытии подключения к серверу. - найдите ip-адрес с помощью
ping
- фильтр
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