Найти в Дзене
Wissance

Почему не работает соединение с SQL Server (MSSQL) через tcp

Способы подключения к SQL Server В данной статье мы расскажем почему не работает и как настроить подключение к SQL Server (MSSQL) через tcp-порт. В SQL-сервер существует 3 способа коммуникации: Разделяемая память не подходит если нам необходимо разместить на физически разных устройствах сервер баз данных и приложение, кроме того, я не видел, чтобы она использовалась кроме программ, написанных с использование C/C++ и WinAPI. Именованные каналы в Windows могут позволить подключиться с удаленной машины, однако, в этом случае они будут работать поверх TCP/IP, поэтому нет никакого смысла в использовании именованных каналов. Поэтому сосредоточимся на использовании TCP/IP для подключения к SQL Server. Казалось бы я поставил SQL сервер и у меня должно осуществляться подключение к нему по порту 1433, но нет, при попытке соединения получаю ошибку: Для проверки того слушает ли SQL Server TCP-порт мы можем использовать команду netstat в powershell: netstat -ano |findstr 1433 Если мы видим пуст
Оглавление

Способы подключения к SQL Server

В данной статье мы расскажем почему не работает и как настроить подключение к SQL Server (MSSQL) через tcp-порт. В SQL-сервер существует 3 способа коммуникации:

  • Разделяемая память (т.е. область памяти, которая может быть использована более чем одним процессом)
  • Именованные каналы
  • TCP/IP

Разделяемая память не подходит если нам необходимо разместить на физически разных устройствах сервер баз данных и приложение, кроме того, я не видел, чтобы она использовалась кроме программ, написанных с использование C/C++ и WinAPI. Именованные каналы в Windows могут позволить подключиться с удаленной машины, однако, в этом случае они будут работать поверх TCP/IP, поэтому нет никакого смысла в использовании именованных каналов. Поэтому сосредоточимся на использовании TCP/IP для подключения к SQL Server. Казалось бы я поставил SQL сервер и у меня должно осуществляться подключение к нему по порту 1433, но нет, при попытке соединения получаю ошибку:

Вот так mssql (sql server) "пинает" нас при попытке соединиться
Вот так mssql (sql server) "пинает" нас при попытке соединиться

Для проверки того слушает ли SQL Server TCP-порт мы можем использовать команду netstat в powershell: netstat -ano |findstr 1433

Если мы видим пустой вывод, значит никто (SQL Server) не слушает порт.

Настраиваем SQL Server

Для настройки нам понадобится вызвать утилиту Sql Server Configuration Manager. Какую из утилит нужно запустить нужно смотреть здесь. Например, у меня установлен SQL Server 2017 тогда по умолчанию мой менеджер конфигурации располагается в C:\Windows\SysWOW64\SqlServerManager14.msc

Первым делом заходим в раздел "Сетевой конфигурации" и устанавливаем разрешено для TCP/IP

НО ЭТОГО НЕДОСТАТОЧНО!
НО ЭТОГО НЕДОСТАТОЧНО!

Этого недостаточно для того, чтобы подключение заработало, есть еще момент связанный с выбором порта для подключения по TCP/IP. Для этого через правый клик по TCP/IP переходим в свойства и далее на вкладку IP-адреса. Проматываем вниз к IPALL и устанавливаем для всех IP-адресов использование порта 1433:

Устанавливаем значение 1433 для порта
Устанавливаем значение 1433 для порта

Теперь все настроено, перезапускаем SQL Server через верхний пункт -> Службы SQL Сервер и приступаем к тестированию

Тестируем подключение

Сначала проверяем через netstat:

Как видим SQL-сервер слушает порт
Как видим SQL-сервер слушает порт

И в заключение запускаем Unit-тест:

Тест выполняется, подключение есть
Тест выполняется, подключение есть

В заключение хотелось бы отметить, что мы разместили полное видео процесса настройки: