Порт SQL сервера – это ключевой параметр для подключения к базе данных, особенно при работе в средах с несколькими экземплярами или нестандартной конфигурацией сети. По умолчанию Microsoft SQL Server использует TCP-порт 1433 для статических экземпляров, однако в случае динамических портов, особенно при использовании SQL Server Browser, определить точное значение может быть неочевидно.
Один из самых надежных способов – проверить файл ErrorLog, который хранится в директории LOG инстанса SQL Server. В нем после запуска сервиса указывается строка вида: Server is listening on [ ‘any’ 1433]. Это значение и есть используемый порт.
Альтернативный метод – использовать SQL Server Configuration Manager. В разделе SQL Server Network Configuration → Protocols for [Имя экземпляра] следует выбрать TCP/IP и открыть его свойства. Во вкладке IP Addresses можно найти порт в строках TCP Dynamic Ports и TCP Port, соответствующих активным IP-адресам.
Для удаленного определения можно воспользоваться утилитой netstat с фильтрацией по процессу sqlservr.exe или PowerShell-командой:
Get-Process -Id (Get-NetTCPConnection -OwningProcess | Where-Object { $_.LocalPort -eq 1433 }).OwningProcess
Также важно учитывать, что при включенном SQL Server Browser (порт 1434/UDP), сервер может автоматически направлять клиента к нужному TCP-порту, что затрудняет диагностику без анализа сетевого трафика. В этом случае полезен Wireshark – фильтруйте пакеты по протоколу TDS, чтобы увидеть фактический порт соединения.
Как узнать порт SQL Server через 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 [имя экземпляра].
Дважды щелкните по TCP/IP, чтобы открыть свойства протокола. Перейдите на вкладку IP Addresses.
Прокрутите вниз до секции IPAll. Значение в поле TCP Dynamic Ports указывает динамический порт, если он используется. Если это поле пустое, посмотрите значение в поле TCP Port – это статический порт, на котором работает экземпляр SQL Server.
Чтобы порт начал использоваться, убедитесь, что протокол TCP/IP включен. При необходимости перезапустите службу SQL Server через SQL Server Services в том же окне.
Получение порта с помощью запроса T-SQL
Для определения текущего TCP-порта, используемого экземпляром SQL Server, выполните следующий T-SQL-запрос:
SELECT local_net_address, local_tcp_port
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
Представленное представление sys.dm_exec_connections
содержит сведения о сетевых подключениях к серверу. Условие session_id = @@SPID
ограничивает результат текущей сессией, исключая лишние строки.
Поле local_tcp_port
отобразит используемый порт. Если возвращаемое значение – NULL
, соединение установлено не по TCP (например, через Shared Memory). В этом случае порт отсутствует, и запрос следует выполнять с машины, подключённой по TCP/IP.
Убедитесь, что служба SQL Server действительно использует сетевой протокол TCP/IP. Это можно проверить в утилите SQL Server Configuration Manager: раздел SQL Server Network Configuration, пункт Protocols for [Имя_экземпляра]. Протокол TCP/IP должен быть включён.
Определение порта SQL Server в файле ERRORLOG
Файл ERRORLOG содержит детальную информацию о процессе запуска SQL Server, включая используемый TCP-порт. Для получения порта необходимо открыть файл ERRORLOG, расположенный по пути %ProgramFiles%\Microsoft SQL Server\MSSQLXX.
, где MSSQLXX
– номер версии, а
– имя экземпляра.
После открытия файла найдите строку, содержащую фрагмент Server is listening on
. Она может выглядеть так: Server is listening on [ 'any'
. Цифра в конце – это порт, который использует SQL Server для прослушивания подключений. В случае динамического порта значение будет отличаться от стандартного 1433.
Если используется IPv6, строка может содержать [ '::'
. Также возможно наличие нескольких записей, если сервер настроен на прослушивание нескольких протоколов или IP-адресов. Проверку следует проводить после каждой перезагрузки службы SQL Server, так как в случае динамической настройки порт может измениться.
Для упрощения поиска используйте текстовый поиск по слову listening
. ERRORLOG создается заново при каждой перезапуске службы, поэтому проверяйте самый актуальный файл с наибольшим номером или без расширения .n.
Просмотр активных портов через netstat и фильтрация по sqlservr.exe
Для определения порта, на котором работает SQL Server, можно использовать встроенную утилиту netstat
с фильтрацией по исполняемому файлу процесса sqlservr.exe
. Это особенно полезно в случае, если сервер использует динамический порт или работает несколько экземпляров SQL Server.
Откройте командную строку с правами администратора и выполните следующую команду:
netstat -ano | findstr :1433
Если сервер работает на нестандартном порту, используйте:
netstat -ano | findstr "LISTENING"
Найдите строки, где состояние – LISTENING
. Обратите внимание на PID (последний столбец). Далее выполните:
tasklist /FI "PID eq [номер_PID]"
Для более точной фильтрации используйте PowerShell:
Get-Process -Id (Get-NetTCPConnection | Where-Object $_.State -eq "Listen" } | Sort-Object -Property OwningProcess | Select-Object -ExpandProperty OwningProcess) | Where-Object { $_.ProcessName -eq "sqlservr" }
Это позволит исключить лишние процессы и сразу получить список портов, занятых sqlservr.exe
.
Использование PowerShell для обнаружения порта SQL Server
PowerShell позволяет точно определить порт, который использует экземпляр SQL Server, без необходимости вручную анализировать файлы конфигурации. Ниже представлены практические команды и подходы.
- Откройте PowerShell от имени администратора.
- Выполните команду для получения имени сервера и экземпляра:
Get-Service | Where-Object { $_.Name -like 'MSSQL*' }
Имя службы обычно имеет вид MSSQL$ИМЯ_ЭКЗЕМПЛЯРА
. Это нужно для следующего шага.
- Получите путь к sqlservr.exe для нужной службы:
Get-WmiObject Win32_Service | Where-Object { $_.Name -eq 'MSSQL$ИМЯ_ЭКЗЕМПЛЯРА' } | Select-Object -ExpandProperty PathName
Определите расположение папки \MSSQL\Binn
и найдите файл sqlservr.exe
. Это указывает на директорию с конфигурацией экземпляра.
- Прочитайте файл
ERRORLOG
для анализа стартовой информации:
Get-Content "C:\Program Files\Microsoft SQL Server\MSSQLXX.INSTANCE\MSSQL\Log\ERRORLOG" | Select-String -Pattern "Server is listening on"
Результат содержит IP-адрес и порт, на котором слушает SQL Server, например:
Server is listening on [ 'any' 1433]
- Альтернативно, используйте PowerShell для чтения значения из реестра:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQLXX.INSTANCE\MSSQLServer\SuperSocketNetLib\Tcp\IPAll" | Select-Object TcpPort
Значение TcpPort
указывает активный TCP-порт SQL Server. Если поле пустое, значит используется динамический порт, который можно уточнить в разделе \IPn\TcpDynamicPorts
.
- Проверка открытого порта через netstat с фильтрацией по sqlservr.exe:
netstat -ano | findstr :1433
Get-Process -Id PID
PowerShell предоставляет несколько надежных способов определить порт SQL Server – как через реестр, так и через анализ логов. Используйте их в зависимости от вашей задачи и уровня доступа.
Проверка порта через параметры подключения в строке ODBC
При настройке подключения через ODBC можно указать порт SQL сервера непосредственно в строке подключения. Этот метод позволяет явно указать, какой порт будет использоваться для подключения к базе данных. В строке ODBC порт задается через параметр Server, в котором можно указать как имя хоста, так и порт, разделив их двоеточием.
Пример строки подключения с указанием порта:
Driver={SQL Server};Server=192.168.1.100,1433;Database=TestDB;
Здесь 192.168.1.100 – это адрес SQL сервера, а 1433 – порт, через который осуществляется подключение. Важно, чтобы порт был указан правильно, иначе соединение не будет установлено. Если порт не указывается, используется порт по умолчанию для SQL Server, который равен 1433.
Для проверки текущего порта, на котором работает сервер, можно также использовать строку подключения с параметром Server, указав IP-адрес и имя сервера, но без явного указания порта. В этом случае, если сервер слушает на нестандартном порте, подключение будет невозможно, и можно будет уточнить его через параметры конфигурации сервера или документацию.
Если необходимо проверить корректность порта, рекомендуется использовать утилиты для тестирования соединений, такие как telnet, для подтверждения, что порт открыт и доступен для подключения.
Кроме того, в некоторых случаях можно использовать специальные инструменты SQL Server Management Studio (SSMS) или скрипты, чтобы проверить, на каком порте работает сервер, если порт не был явно указан в строке ODBC. Это позволит избежать ошибок при настройке подключения.
Вопрос-ответ:
Как узнать, какой порт используется SQL сервером?
Для того чтобы узнать, какой порт используется SQL сервером, можно воспользоваться несколькими методами. Один из них — это посмотреть настройки SQL сервера через его конфигурационные файлы. Например, в случае с SQL Server можно проверить настройки TCP/IP в SQL Server Configuration Manager. Также можно использовать команду `netstat` для определения портов, которые активно используются на сервере. Этот метод полезен, если SQL сервер работает на нестандартном порту.
Почему SQL сервер может использовать нестандартный порт?
Использование нестандартного порта SQL сервера может быть связано с различными соображениями безопасности или организационными требованиями. Например, администраторы могут изменить порт, чтобы уменьшить вероятность атак на стандартный порт SQL (например, 1433 для MS SQL Server). Также это может быть необходимо, если несколько SQL серверов работают на одной машине и нужно избежать конфликта портов.
Как проверить, на каком порту слушает SQL сервер, если доступ к серверу ограничен?
Если доступ к серверу ограничен, можно проверить, на каком порту SQL сервер слушает, через клиентскую программу SQL или с помощью командной строки на удаленной машине. Например, можно использовать утилиту `telnet` или `nc` для проверки подключения к серверу по порту. Также возможно обратиться к администратору системы за точной информацией, если это необходимо для диагностики.
Какие инструменты можно использовать для проверки порта SQL сервера?
Для проверки порта SQL сервера можно использовать несколько инструментов. В первую очередь это встроенные средства операционной системы, такие как `netstat`, который показывает список всех открытых портов и активных соединений. Для SQL Server есть специальная утилита SQL Server Configuration Manager, где можно настроить и проверить порты TCP/IP. Также можно использовать команду `sqlcmd` для подключения к серверу с указанием порта, если он отличается от стандартного.
Как сменить порт для SQL сервера?
Чтобы сменить порт для SQL сервера, необходимо открыть SQL Server Configuration Manager. В разделе SQL Server Network Configuration нужно выбрать протокол TCP/IP и изменить порт в свойствах для нужного экземпляра сервера. После этого требуется перезапустить SQL сервер, чтобы изменения вступили в силу. Также важно настроить фаервол, чтобы новый порт был открыт для входящих соединений.