По умолчанию SQL Server использует порт 1433 для входящих подключений по протоколу TCP. Однако в реальных конфигурациях этот порт может быть изменён вручную или автоматически, особенно при использовании экземпляров с динамическими портами. Чтобы точно определить, какой порт используется, требуется проверить настройки сервера непосредственно.
Первый способ – использовать SQL Server Configuration Manager. Перейдите в раздел SQL Server Network Configuration → Protocols for [имя экземпляра], откройте свойства протокола TCP/IP и найдите активный порт в разделе IPAll. Если поле TCP Dynamic Ports содержит значение, например 49172, сервер использует динамический порт. Если указано значение в поле TCP Port, используется статический порт.
Альтернатива – запрос системных представлений. Выполните на сервере команду:
SELECT local_tcp_port FROM sys.dm_exec_connections WHERE session_id = @@SPID;
Результат покажет текущий порт, через который подключён клиент, что особенно полезно для диагностики нестандартных конфигураций.
Также можно использовать команду netstat -an | findstr :1433 в командной строке Windows для поиска активных соединений. Это даст общее представление, слушает ли сервер стандартный порт, но не покажет конкретных настроек экземпляра.
Если сервер настроен в режиме именованных экземпляров, для определения порта можно воспользоваться утилитой SQL Server Browser или выполнить сканирование через telnet или PowerShell, обращаясь к имени экземпляра – браузерный сервис вернёт порт, назначенный этому экземпляру.
Проверка используемого порта через SQL Server Configuration Manager
Откройте SQL Server Configuration Manager, соответствующий версии установленного SQL Server. Для SQL Server 2019 путь обычно выглядит так: Пуск → Microsoft SQL Server 2019 → SQL Server Configuration Manager.
Перейдите в раздел SQL Server Network Configuration и выберите Protocols for MSSQLSERVER (или имя вашего экземпляра). Дважды щелкните по TCP/IP, чтобы открыть его свойства.
Во вкладке IP Addresses прокрутите вниз до секции IPAll. Поле TCP Port содержит номер используемого порта. Если оно пустое, сервер использует порт по умолчанию – 1433. Поле TCP Dynamic Ports указывает динамически назначенный порт, если включено автоматическое распределение.
При необходимости отключите динамические порты, установив значение 0 в TCP Dynamic Ports, и вручную задайте статический порт в TCP Port.
После изменения параметров перезапустите SQL Server через раздел SQL Server Services в Configuration Manager, чтобы применить настройки.
Определение порта с помощью SQL Server Error Log
SQL Server при запуске записывает информацию о сетевых подключениях в журнал ошибок. Чтобы определить используемый порт, откройте последний файл Error Log, расположенный по умолчанию в каталоге C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log\
, где MSSQLXX
– версия сервера.
Откройте файл с именем ERRORLOG
с помощью текстового редактора. Найдите строку, содержащую Server is listening on
. Пример строки: Server is listening on [ 'any'
. Указанное в конце число – это порт, на котором SQL Server принимает подключения.
Если сервер настроен на динамический порт, вы увидите значение, отличное от стандартного 1433. В этом случае для дальнейшей диагностики можно использовать команду xp_readerrorlog
в SSMS:
EXEC xp_readerrorlog 0, 1, N'Server is listening on';
Эта команда вернет строки журнала, содержащие информацию о прослушиваемых портах. Убедитесь, что журнал ошибок не был недавно очищен, иначе нужная информация может отсутствовать.
Использование запроса T-SQL для получения текущего порта
Для определения порта, на котором работает экземпляр SQL Server, выполните следующий T-SQL-запрос:
EXEC xp_readerrorlog 0, 1, N'Server is listening on';
Результат содержит строку, включающую IP-адрес и порт, например: Server is listening on [ 'any'
. Извлеките номер порта из этой строки. Если сервер использует нестандартный порт, это будет явно указано.
Альтернативный способ – использовать представление sys.dm_exec_connections:
SELECT local_tcp_port FROM sys.dm_exec_connections WHERE session_id = @@SPID;
Эта команда возвращает порт TCP, который используется текущим сеансом. Метод особенно полезен при подключении к нестандартному порту или в случае нескольких активных экземпляров SQL Server.
Права доступа: для выполнения указанных запросов необходимы разрешения на выполнение хранимой процедуры xp_readerrorlog и доступ к системным представлениям.
Поиск используемого порта через команду netstat
Откройте командную строку от имени администратора. Выполните команду netstat -ano | findstr :1433
, если известно, что SQL Server может использовать порт по умолчанию. Для поиска любого порта, используемого SQL Server, замените :1433
на sqlservr
или используйте команду netstat -ano
с последующим фильтром по PID.
Найдите строку с локальным адресом, в котором указан нужный порт, и обратите внимание на последний столбец – PID процесса. Запомните его.
Далее выполните tasklist | findstr [PID]
, заменив [PID]
на число из предыдущего шага. Если в результате отображается sqlservr.exe
, значит указанный порт используется SQL Server.
Этот способ позволяет оперативно определить активный порт без доступа к конфигурации SQL Server. Особенно полезен, если сервер работает в нестандартной конфигурации или использует динамическое назначение портов.
Выявление порта через PowerShell-скрипт
Для точного определения используемого порта SQL Server через PowerShell достаточно выполнить скрипт, считывающий данные из системного реестра. SQL Server хранит конфигурацию сетевых протоколов в ветке реестра:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL
Сначала требуется определить имя экземпляра и его идентификатор (например, MSSQLSERVER или SQL2019). Получив его, нужно перейти по пути:
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\[InstanceID]\MSSQLServer\SuperSocketNetLib\Tcp\IPAll
$instanceName = "MSSQLSERVER" $regPathRoot = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" $instanceId = (Get-ItemProperty -Path $regPathRoot).$instanceName $tcpKey = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instanceId\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" $tcpPort = (Get-ItemProperty -Path $tcpKey).TcpPort Write-Output "Порт SQL Server: $tcpPort"
Если значение TcpPort пустое, проверьте параметр TcpDynamicPorts – в нём может быть указан динамический порт. Чтобы отключить динамический выбор, задайте TcpPort вручную в конфигурации SQL Server Configuration Manager.
Для выполнения скрипта требуется запуск PowerShell с правами администратора. Используйте Set-ExecutionPolicy при необходимости разрешить выполнение скриптов.
Настройка статического порта и его проверка
Для обеспечения стабильного соединения с SQL Server важно правильно настроить статический порт. Это позволяет гарантировать, что сервер будет использовать один и тот же порт при каждом подключении, что важно для управления доступом и безопасности.
Для настройки статического порта необходимо выполнить несколько шагов:
- Откройте SQL Server Configuration Manager.
- Перейдите в раздел SQL Server Network Configuration и выберите Protocols for <имя_экземпляра>.
- Откройте свойства протокола TCP/IP и выберите вкладку IP Addresses.
- В разделе IPAll найдите параметр TCP Port.
- Установите желаемый порт для использования в поле TCP Port. Например, 1433, если это стандартный порт.
- Перезагрузите службу SQL Server, чтобы изменения вступили в силу.
Теперь SQL Server будет использовать указанный порт для всех соединений. Для проверки правильности настройки выполните следующие действия:
- Откройте командную строку и выполните команду
netstat -an | findstr <порт>
. Это покажет, прослушивает ли SQL Server выбранный порт. - Также можно использовать команду
sqlcmd
для подключения через указанный порт:sqlcmd -S <сервер>,<порт>
. - Для более точной диагностики используйте SQL Server Management Studio (SSMS), подключившись к серверу по статическому порту.
Если сервер не отвечает на выбранный порт, проверьте настройки брандмауэра и убедитесь, что порт открыт для входящих соединений.
Вопрос-ответ:
Как узнать, какой порт использует SQL Server?
Для того чтобы определить порт, используемый SQL Server, можно воспользоваться несколькими методами. Один из самых простых — это использовать утилиту SQL Server Configuration Manager. Откройте её, выберите SQL Server Network Configuration и найдите параметры TCP/IP. В свойствах протокола TCP/IP указывается порт, на котором работает SQL Server. Кроме того, можно посмотреть на порты, настроенные в файле конфигурации SQL Server или использовать команду `netstat` в командной строке для определения слушающих портов.
Как можно проверить, какой порт слушает SQL Server через командную строку?
Для этого можно использовать команду `netstat` в командной строке. Введите команду `netstat -an | find «1433»`, где 1433 — это стандартный порт для SQL Server. Если SQL Server использует нестандартный порт, вы можете увидеть его в списке открытых портов, и тогда нужно будет найти соответствующую информацию о порте в настройках SQL Server, используя SQL Server Configuration Manager или другие методы.
Что делать, если порт SQL Server заблокирован фаерволом?
Если порт SQL Server заблокирован фаерволом, необходимо открыть его в настройках фаервола. В Windows это можно сделать через панель управления, выбрав «Брандмауэр Windows» и добавив правило для разрешения подключения на нужный порт. Также важно убедиться, что SQL Server настроен на использование этого порта, и что он не использует нестандартные порты, которые могут быть заблокированы на уровне сети.
Можно ли изменить порт, на котором работает SQL Server?
Да, можно изменить порт, на котором работает SQL Server. Для этого нужно открыть SQL Server Configuration Manager, перейти в раздел SQL Server Network Configuration, выбрать TCP/IP и изменить настройки порта. После этого потребуется перезапустить SQL Server, чтобы изменения вступили в силу. Также важно убедиться, что новый порт открыт в фаерволе и доступен для подключения из сети.