Как изменить порт экземпляра Microsoft SQL Server?

В этой статье мы разберемся как узнать текущий TCP порт, на котором слушает и ожидает подключения именованный или default экземпляр MS SQL Server , как изменить порт подключения SQL Server на статический/динамический и как используется служба SQL Server Browser клиентами при подключении к SQL.

  • Default экземпляр SQL Server (MSSQLSERVER) работает на статическом порту TCP 1433. Именно к этому порту подключаются клиенты, или консоль SQL Server Management Studio (SSMS);
  • Именованные экземпляры MSSQL и SQL Server Compact по-умолчанию настроены на использование динамического TCP порта из диапазона RPC (49152 – 65535).

Динамической порт означает, что номер порта, на котором принимает подключение экземпляр MSSQL назначается при запуске службы SQL Server. В большинстве случаев, даже после перезагрузки сервера, SQL Server начнет слушать тот же самый динамический TCP порт, который был назначен до перезагрузки. Но если этот порт занят, SQL Server запустится на новом порту TCP (приложение, которое использует SQL обычно без проблем получит номер нового порта от службы SQL Server Browser, об этом чуть ниже). Динамический порты SQLServer удобны с точки зрения простоты администрирования нескольких экземпляров SQL на одном сервере, но вызывают множество проблем, если в вашей сети используются межсетевые экраны.

Изменение номера TCP порта экземпляра SQL Server

Вы можете перенастроить ваш сервер так, чтобы он слушал на другом статическом TCP или динамическом порту. Как правило это нужно, когда на одном SQL Server-e запушено несколько экземпляров, или у вас используются межсетевые экраны.

Для управления портами подключения нам потребуется SQL Server Configuration Manager . Обычно эта оснастка устанавливается вместе с экземпляром MSSQL .

Запустите SQL Server Configuration Manager и разверните секцию SQL Server Network Configuration .

В моём случае на сервере установлен всего 1 экземпляр MSSQL– NODE1, поэтому настраивать порты я буду для него. В списке доступных протоколов для данного экземпляра имеются:

  • Протокол Shared Memory используется для подключения с локального компьютера (с того, где установлен экземпляр MSSQL). Отключать его не рекомендуется;
  • Named Pipes может использоваться по протоколу TCP/IP, но его использования не несёт особой выгоды, поэтому оставим его выключенным;
  • TCP/IP – именно здесь настраиваются сетевые параметры MSSQL.

SQL Server Network Configuration

Щелкните дважды по TCP/IP .

настройки протокола tcpip для sql server

На вкладке Protocol всего 3 параметра:

  • Enabled – убедитесь, что протокол TCP/IP включен;
  • Keep Alive – частота проверки того, что соединение еще актуально (в миллисекундах). Не меняйте этот параметр без необходимости;
  • Listen All – неочевидная настройка, которая отвечает за секцию IPAll во вкладке IP Addresses. Если Listen All выставлена в No, то секция IPAll будет игнорироваться.

На вкладке IP Addresses вы увидите перечисление всех IP адресов машины (включая IPv6 и локальные) и соответствующие им настройки. Здесь вы можете задать разные TCP порты для локального и внешнего адреса подключения, или разные порты для разных внешних адресов (если у вас сервер с несколькими сетевыми интерфейсами в разных сегментах).

TCP Dynamic Ports в sql server

Скорее всего вы захотите изменить порт сразу для всех IP, поэтому нужно изменить его секции IPAll .

IPAll настройка экземпляра sql server

Параметр TCP Dynamic Ports отвечает за использование динамических портов.

  • Пустое значение TCP Dynamic Ports отключает использование динамических портов SQL Server;
  • 0 включает использование динамических TCP портовиз диапазона RPC 49152 – 65535;
  • Выставлять здесь конкретное значение не имеет смысла – оно меняется каждый раз при перезагрузке экземпляра MSSQL.

Чтобы установить статический TCP порт для данного экземпляра SQL Server, отключите TCP Dynamic Ports, и задайте новый номер статического порта в параметре TCP Port .

сменить номер порта sql server на другой статический

Для применения изменений перезапустите службу SQL Server. Обратите внимание на отключенную службу SQL Server Browser.

перезапуск службы экземпляра sql server

Проверьте, что теперь к вашему экземпляру SQL можно подключиться через SSMS. Формат строки подключения такой:

hostnameinstancename,PortNumber

sql server срока подключения к статическому tcp порту

Подключиться без указания порта не получится, поскольку SQL Browser выключен.

TCP порты и служба SQL Server Browser

До версии MSSQL 2000 нельзя было установить больше одного экземпляра СУБД на один компьютер. Такая возможность появилась в более новых версиях MSSQL. Служба SQL Server Browser впервые появилась в SQL Server 2005 и использовалась как посредник для распределения подключений между различными экземплярами MSSQL, установленными на одном компьютере.

Также SQL Server Browser отвечает за подключение к MSSQL (например, из SQL Server Management Studio) без указания порта, например testnode1node1 . Служба SQL Server Browser узнает номер текущего динамического порта экземпляра из реестра и сообщает его клиенту.

Если вы отключите службу SQL Server Browser, то для подключения к экземпляру необходимо вручную указывать TCP порт. Например, testnode1node1, 1440 .

При отключенной службе SQL Server Browser и использовании динамических портов приложения не смогут узнать номер порта, к которому нужно обращаться.

Стандартные порты SQL Server

  • TCP 1433 — Стандартный порт SQL Server
  • UDP 1433 – порт, используемый SQL Server Browser

Другие порты настраиваются при установке/настройке конкретного сервиса. Так что по умолчанию, Вам достаточно открыть в файерволе только два порта: 1433 TCP/UDP.

Если у вас используются строгие настройки фаервола, или если вы хотите максимально ограничить SQL Server, рекомендуется отключить Dynamic Ports (выставить пустое значение) и отключить службу SQL Server Browser.

Если же ваши SQL Server’a находятся в публичном доступе, то будет хорошей идеей поменять порт на нестандартный. Это не защитит от атак полностью, но снизит их число.

EnglishRussianUkrainian