Як знайти порт для MS SQL Server 2008?


107

Я запускаю MS SQL Server 2008 на своїй локальній машині. Я знаю, що порт за замовчуванням - 1433, але деякі, як він не слухає цей порт. SQL - це експрес-видання.

Я вже спробував журнал, SQL Server Management Studio, реєстр та розширену збережену процедуру пошуку порту. Але, я не міг її знайти. Будь ласка, допоможи мені. Дякую.


Я поновлюю питання з іншими ресурсами, які я переглянув, щоб у мене були закладені ними закладки, а інші могли також ними скористатися. blogs.msdn.com/sql_protocols/archive/2008/11/05 / ... decipherinfosys.wordpress.com/2008/01/02 / ... dumbledad.wordpress.com/2008/07/09 / ...
royalghost

Я використовую перегляд TCP, щоб побачити порт, на якому він працює. Я здивований, побачивши, що сервер приймає динамічний порт замість 1433 навіть після встановлення його як екземпляр за замовчуванням. Я також видалив експрес-версію та встановив повне видання, після якого лише я бачу процес як sqlservr.exe: 5272. І, моє припущення, воно слухає в порту 5272.
royalghost

Відповіді:


140

Натисніть на 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.

Залежно від з'єднання, номер порту може змінюватись.


На моєму комп’ютері, що працює під управлінням Windows 10 та встановлено SQL Server 2012 Express, менеджер конфігурацій SQL Server не вказаний у меню запуску Windows, але його можна знайти у оснастці MMC управління комп'ютером у групі Служби та програми . Динамічний порт також знаходиться не під елементом " Налаштування нативного клієнта SQL" (що для мене версія "11.0"), а під елементом " Конфігурація мережі SQL Server" (і на вкладці " IP адреси " у вікні властивостей протоколу TCP / IP , за адресою: внизу, в налаштуваннях TCP Dynamic Ports ).
Кенні Евітт

Ця відповідь стосується клієнтського порту, а не порту сервера, про що задається в оригінальному запитанні. Відповідь від @ Brother28 нижче більш точна.
Slogmeister Extraordinaire

52

Ви також можете подивитися з a

netstat -abn

Він надає портам відповідну програму, яка тримає їх відкритими.

Редагувати : або TCPView .


Чи можете ви повідомити мене, під яким ім'ям названий MS SQL Server 2008 як додаток?
royalghost

2
Це має бути sqlservr.exe (я не маю жодної перевірки).
rslite

1
Це працювало для мене. Номер порту знаходиться у рядку над [sqlservr.exe].
Зене

Я знайшов це під Ssms.exe
ThiagoPonte

49

Ось 5 знайдених нами методів:

  • Спосіб 1: Менеджер конфігурацій SQL Server
  • Спосіб 2: Переглядач подій Windows
  • Спосіб 3: Журнали помилок SQL Server
  • Спосіб 4: sys.dm_exec_connections DMV
  • Метод 5: Читання реєстру за допомогою xp_instan_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 і виберіть "Властивості"

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

Крок 4. У діалоговому вікні "Властивості TCP / IP" перейдіть на вкладку "IP адреси" та прокрутіть вниз до групи IPAll.

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

Якщо SQL Server, якщо він налаштований на запуск статичного порту, він буде доступний у текстовому порті TCP Port, а якщо він налаштований на динамічному порту, то поточний порт буде доступний у текстовому полі TCP Dynamic Ports. Тут мій примірник слухає номер порту 61499.

Інші методи ви можете знайти тут: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/


1
Працювали для мене. Я спробував властивості TCP / IP від ​​SQL Native Client Configuration і повертав за замовчуванням 1433. Але коли я перевірив порти TCP Dynamic з конфігурації мережі SQL Server. Я знайшов порт 67244. І після цього я зміг успішно підключитися до цього порту. +1
Реубен

17

Я зіткнувся з цим, тому що у мене просто виникли проблеми зі створенням віддаленого з'єднання і я не міг зрозуміти, чому налаштування порту 1433 в брандмауері не виконує цю роботу. Зараз я, нарешті, маю повну картину, тому я подумав, що варто поділитися.

Перш за все, необхідно включити "TCP / IP" за допомогою диспетчера конфігурації SQL Server за протоколами для SQLEXPRESS!

Якщо використовується названий екземпляр ("SQLExpress" у цьому випадку), він прослуховуватиметься на динамічному порту. Щоб знайти цей динамічний порт, у вас є пара варіантів; назвати декілька:

  • перевірка ERRORLOGSQL 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"(де xxxx - ip сервера) вже вирішує його в цей момент.

Але тоді я хотів підключитися віддалено, передавши ім'я екземпляра (наприклад:) x.x.x.x\SQLExpress. Це коли послуга браузера SQL починає працювати. Це блок, який вирішує ім'я екземпляра в порт 51118. Служба браузера SQL прослуховує порт UDP 1434 (стандартний та статичний), тому мені довелося дозволити це також у брандмауері сервера.

Щоб трохи розширити фактичну відповідь: якщо хтось інший не любить динамічні порти і хоче статичний порт для свого екземпляра SQL Server, слід спробувати це посилання .


1
+1 для служби браузера SQL. Це важливо для того, як працює SQL Express з номерами портів
peterG

11

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

Server is listening on [ 192.128.3.2 <ipv4> 1433].

Я не бачу цього журналу, але в студії управління SQL Server у розділі "З'єднання" встановлено прапорець "Дозволити віддалені з'єднання з цим сервером". Отже, я розумію, що віддалене з'єднання дозволено.
royalghost

@royal: Окрім "дозволити віддалені з'єднання", ви також повинні включити протокол TCP. Зараз сервер, ймовірно, слухає лише NP
Remus Rusanu

див. відповідь нижче від @morteza для читання журналу через SQL-запит xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

8

Я вирішив проблему, включивши TCP / IP за допомогою диспетчера конфігурації SQL Server у протоколі для SQLEXPRESS2008, я перезапустив службу, і тепер у файлі ERRORLOG з'являється "Сервер слухається"


8

Спробуйте це (потрібен доступ до sys.dm_exec_connections):

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

3
FYI: якщо SQL-сервер не має відкритого з'єднання, він, ймовірно, нічого не покаже.
Тіло

6
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[Визначте порт, який використовується іменованим екземпляром двигуна баз даних SQL Server шляхом читання журналів помилок SQL Server]


1
дякую добру пораду Morteza, я отримую помилку, використовуючи вищевказане на SQL2012, але для моїх потреб вистачає наступного: XP_READERRORLOG 0, 1, N'Server прослуховує '
mattpm

Скопіюйте помилку з вашим запитом, але це працює, xp_readerrorlog 0, 1, N'Server is listening on'
Tilo

6

Ви можете використовувати ці дві команди: tasklistіnetstat -oan

Tasklist.exeяк taskmgr.exeу текстовому режимі.

За допомогою tasklist.exeабо taskmgr.exeви можете отримати PIDsqlservr.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


5

Я використовую наступний скрипт у 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

Не впевнений, чому це було знято, це не дає негайної відповіді, але дає відповідь плюс soooo набагато більше. Додавання цього до мого списку корисних запитів.
Тоні

як запит багато, також він, схоже, не відображається, якщо не встановлено / встановлено жодне з'єднання.
Тіло

4

Це також можна зробити через сканування портів, що є єдиним можливим методом, якщо у вас немає доступу адміністратора до віддаленого сервера.

Використання Nmap ( http://nmap.org/zenmap/ ) для "інтенсивного сканування TCP" дасть такі результати для всіх випадків на сервері:

[10.0.0.1\DATABASE]    
Instance name: DATABASE
Version: Microsoft SQL Server 2008 R2 RTM    
Product: Microsoft SQL Server 2008 R2    
Service pack level: RTM    
TCP port: 49843    
Named pipe: \\10.0.0.1\pipe\MSSQL$DATABASE\sql\query

Важлива примітка: Щоб перевірити за допомогою аналізатора запитів або MS SQL Server Management Studio, ви повинні сформувати ім’я та порт вашого сервера інакше, ніж ви зазвичай підключалися до порту через HTTP, наприклад, використовуючи кому замість двокрапки .

  • Ім'я сервера студії управління: 10.0.0.1,49843
  • Рядок підключення: Data Source=10.0.0.1,49843

проте

  • Рядок підключення JDBC: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

1

Це працює для SQL Server 2005 - 2012. Шукайте id події = 26022 у журналі помилок у програмах. Це покаже номер порту сервера sql, а також які IP-адреси мають доступ.


1

На додаток до перерахованого вище, мені довелося включити як порти TCP, так і UDP для SQLExpress віддалено. Оскільки у мене на машині розробки є три різних екземпляри, я вмикаю 1430-1435і TCP, і UDP.

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