Как найти работающий порт SQL Server?

94

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

не повезло.

телнет 1433

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

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

netstat -abn

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

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

керам
источник
Вы проверяли, работает ли служба сервера Sql ?
Pilgerstorfer Franz

Ответы:

149

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

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
Вы пробовали использовать master db и запустить это
AnandPhadke
3
Если он возвращает 0 строк, TCP / IP отключен. Включен TCP / IP в диспетчере конфигурации SQL Server.
Timo
76

очень просто. запишите PID sqlsrvr.exe из диспетчера задач, затем выполните эту команду:

netstat -ano | findstr *PID*

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

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

Мантас Милерис
источник
3
Это сработало для меня «наоборот»: нужно было найти (не по умолчанию) номер порта удаленной машины, к которой я был подключен в SSMS.
leqid
57

Это тот, который мне подходит:

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL 
Стефан Штайгер
источник
39

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

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

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

Гринстоун Уокер
источник
3

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

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

Подилуска
источник
Конфигурация собственного клиента SQL? TCP / IP включен. Но порт по умолчанию установлен на 1433: /
keram
@keram Нет - это для клиентов. Вам нужна утилита конфигурации сервера.
podiluska 06
где я могу найти этот конфиг?
keram
В меню «Пуск» - msdn.microsoft.com/en-us/library/ms174212(v=sql.100).aspx
podiluska 06
2

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

Что мне подходит:

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

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

Fbehrens
источник
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

Попробуйте включить протокол по: Configuration Manger > 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
select * from sys.dm_tcp_listener_states 

Больше там: https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-tcp-listener-states-transact-sql?view=sql-server -2017

Владимир Башутин
источник
Пожалуйста, уточните свой ответ.
Harsh Wardhan
Хотя эта ссылка может помочь в вашем ответе на вопрос, вы можете улучшить этот ответ, взяв жизненно важные части ссылки и поместив их в свой ответ, это гарантирует, что ваш ответ останется ответом, если ссылка будет изменена или удалена :)
WhatsThePoint 06
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

Эдди Кумар
источник