Как найти порт для MS SQL Server 2008? - PullRequest
101 голосов
/ 05 октября 2009

Я использую MS SQL Server 2008 на моей локальной машине. Я знаю, что порт по умолчанию - 1433, но кое-кто не слушает этот порт. SQL является экспресс-выпуском.

Я уже пробовал журнал, SQL Server Management Studio, реестр и расширенную хранимую процедуру для поиска порта. Но я не смог найти его. Пожалуйста, помогите мне. Спасибо.

Ответы [ 13 ]

133 голосов
/ 06 сентября 2012

Нажмите на кнопку Start в Windows. Перейти к All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Нажмите SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP двойной щелчок (щелчок правой кнопкой мыши Properties) на TCP/IP

Вы найдете Default Port 1433.

В зависимости от соединения номер порта может различаться.

50 голосов
/ 05 октября 2009

Вы также можете посмотреть с

netstat -abn

Это дает порты с соответствующим приложением, которое держит их открытыми.

Редактировать : или TCPView .

47 голосов
/ 13 января 2014

Вот 5 методов, которые я нашел:

  • Способ 1. Диспетчер конфигурации SQL Server
  • Способ 2. Просмотр событий Windows
  • Метод 3: Журналы ошибок SQL Server
  • Метод 4: sys.dm_exec_connections DMV
  • Способ 5: чтение реестра с использованием xp_instance_regread

Метод 4: sys.dm_exec_connections DMV
Я думаю, что это почти самый простой способ ...
DMV возвращают состояние сервера, которое можно использовать для мониторинга экземпляра SQL Server. Мы можем использовать sys.dm_exec_connections DMV, чтобы определить номер порта, который прослушивает экземпляр SQL Server, используя приведенный ниже код T-SQL:

SELECT local_tcp_port
FROM   sys.dm_exec_connections
WHERE  session_id = @@SPID
GO

Result Set:
local_tcp_port
61499

(1 row(s) affected)

Метод 1: Диспетчер конфигурации SQL Server

Шаг 1. Нажмите Пуск> Все программы> Microsoft SQL Server 2012> Инструменты настройки> Диспетчер конфигурации SQL Server

Шаг 2. Перейдите в Диспетчер конфигурации SQL Server> Конфигурация сети SQL Server> Протоколы для

Шаг 3. Щелкните правой кнопкой мыши TCP / IP и выберите Свойства

enter image description here

Шаг 4. В диалоговом окне Свойства TCP / IP перейдите на вкладку IP-адреса и прокрутите вниз до группы IPAll.

enter image description here

Если SQL Server настроен для работы на статическом порту, он будет доступен в текстовом поле «Порт TCP», а если он настроен на динамический порт, то текущий порт будет доступен в текстовом поле «Динамические порты TCP». Здесь мой экземпляр прослушивает номер порта 61499.

Другие методы вы можете найти здесь: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/

17 голосов
/ 25 июля 2013

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

Прежде всего необходимо включить «TCP / IP» с помощью диспетчера конфигурации SQL Server в разделе «Протоколы для SQLEXPRESS!»

Когда используется именованный экземпляр (в данном случае «SQLExpress»), он будет прослушивать динамический порт. Чтобы найти этот динамический порт, у вас есть несколько вариантов; назвать несколько:

  • проверка ERRORLOG SQL Server, расположенного в '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log' (внутри вы найдете строку, подобную этой: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]" -> поэтому 51118 является динамическим портом в этом случае.

  • проверка реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAll, для моего случая TcpDynamicPorts=51118.

    Редактировать : {MSSQL instance name} это что-то вроде: MSSQL10_50.SQLEXPRESS, не только SQLEXPRESS

Конечно, разрешение этого порта TCP в брандмауэре и создание удаленного соединения путем передачи: "x.x.x.x,51118" (где x.x.x.x - ip сервера) уже решает его на этом этапе.

Но затем я хотел подключиться удаленно, передав имя экземпляра (например: x.x.x.x\SQLExpress). Это когда служба SQL Browser вступает в игру. Это устройство, которое разрешает имя экземпляра в порт 51118. Служба браузера SQL прослушивает порт UDP 1434 (стандартный и статический), поэтому мне пришлось разрешить это и в брандмауэре сервера.

Чтобы немного расширить реальный ответ: если кто-то еще не любит динамические порты и хочет статический порт для своего экземпляра SQL Server, попробуйте эту ссылку .

11 голосов
/ 05 октября 2009

В журнале ERROLOG для строки, как показано ниже. Если вы не видите его, SQL Server не включен для удаленного доступа, или он просто не через TCP. Вы можете изменить это с помощью диспетчера конфигурации SQL Server.

Server is listening on [ 192.128.3.2 <ipv4> 1433].
8 голосов
/ 12 июня 2014

Попробуйте это (требуется доступ к sys.dm_exec_connections):

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL
8 голосов
/ 23 февраля 2011

Я решил проблему, включив протокол TCP / IP с помощью диспетчера конфигурации SQL Server в разделе «Протоколы для SQLEXPRESS2008», перезапустил службу, и теперь в файле ERRORLOG отображается «Сервер прослушивает»

6 голосов
/ 07 марта 2016

Вы можете использовать эти две команды: tasklist и netstat -oan

Tasklist.exe похоже на taskmgr.exe, но в текстовом режиме.

С tasklist.exe или taskmgr.exe вы можете получить PID sqlservr.exe

С netstat -oan он показывает PID соединения, и вы можете отфильтровать его.

Пример:

C:\>tasklist | find /i "sqlservr.exe"
sqlservr.exe  1184 Services    0 3.181.800 KB

C:\>netstat -oan | find /i "1184"
TCP  0.0.0.0:1280  0.0.0.0:0  LISTENING  1184

В этом примере порт SQLServer - 1280

Извлечено из: http://www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html

6 голосов
/ 24 мая 2014
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[Определить порт, используемый именованным экземпляром компонента SQL Server Database Engine, путем чтения журналов ошибок SQL Server]

5 голосов
/ 30 апреля 2014

Я использую следующий скрипт в SSMS

SELECT
     s.host_name
    ,c.local_net_address
    ,c.local_tcp_port
    ,s.login_name
    ,s.program_name
    ,c.session_id
    ,c.connect_time
    ,c.net_transport
    ,c.protocol_type
    ,c.encrypt_option
    ,c.client_net_address
    ,c.client_tcp_port
    ,s.client_interface_name
    ,s.host_process_id
    ,c.num_reads as num_reads_connection
    ,c.num_writes as num_writes_connection
    ,s.cpu_time
    ,s.reads as num_reads_sessions
    ,s.logical_reads as num_logical_reads_sessions
    ,s.writes as num_writes_sessions
    ,c.most_recent_sql_handle
FROM sys.dm_exec_connections AS c
INNER JOIN sys.dm_exec_sessions AS s
    ON c.session_id = s.session_id

--filter port number
--WHERE c.local_tcp_port <> 1433
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...