Разблокировка брандмауэра Windows 10 Defender для MS SQL Server 2014

2367
feetwet

У меня есть экземпляр MS SQL Server 2014 (назовите его MSSQL) на компьютере с Windows 10 (назовите его WINTEN).

Запустив SSMS WINTEN, я могу подключиться как к локальному SQL Server, так и к экземплярам SQL Server на других компьютерах в частной сети.

Однако я не могу устанавливать соединения из SSMS на любом другом компьютере с экземпляром SQL Server, WINTEN\MSSQL пока я полностью не отключу брандмауэр Защитника Windows.

Следуя всем инструкциям, которые я смог найти, я добавил два правила для входящих подключений в брандмауэр Windows, WINTENкак показано здесь:

Windows Defender Firewall settings

Тем не менее, даже с учетом этих правил, как только я включаю брандмауэр Защитника Windows, все соединения SSMS WINTEN\MSSQLзавершаются со следующим сообщением:

SSMS connection error 26

Как правильно настроить брандмауэр Защитника Windows, чтобы другие компьютеры частной сети могли подключаться к MS SQL Server?


Обновление при первом предложении: у меня уже был включен TCP-порт 1433 для SQL Server, как показано здесь:

Sql Server Configuration Manager

2

2 ответа на вопрос

3
pholcroft

Откройте сервисы и найдите следующие записи:

Браузер SQL Server

SQL Server (WINTEN)

Зайдите в их свойства и запишите пути к исполняемым файлам.

В Брандмауэре Windows в режиме повышенной безопасности создайте 4 новых правила для входящих подключений, которые разрешают подключение обеих этих программ по TCP и UDP.

Windows Defender Settings

Обычно я делаю это через стандартный брандмауэр Windows (firewall.cpl), который создаст эти правила для вас с меньшими затратами труда. Откройте firewall.cpl, затем выберите «Разрешить приложение или функцию через брандмауэр Windows». Выберите Разрешить другое приложение и добавьте два исполняемых пути, найденных ранее.

Причина, по которой вам нужно разрешить программе, а не порту через брандмауэр, заключается в том, что, хотя браузер SQL всегда находится на порту 1433, ваш экземпляр SQL будет находиться на случайном / динамическом порту, через который браузер SQL будет направлять соединение. Если вы хотите разрешить порты, а не программы, вам нужно изменить экземпляр SQL на экземпляр по умолчанию и заставить его использовать фиксированный порт с отключенным браузером SQL.

Также убедитесь, что служба обозревателя SQL настроена на автоматический запуск при запуске и что в диспетчере конфигурации SQL включен протокол TCP / IP для вашего экземпляра SQL.

Да, процесс, который вы описали в `Firewall.cpl`, был простым и, наконец, все заработало! Теперь, * если бы * мы могли получить базу данных, O / S и брандмауэр, разработанные одной и той же компанией, *** просто представьте, как это было бы круто ***: Когда пользователь настраивает базу данных для разрешения удаленных подключений, он может * автоматически * проверить, чтобы определить, открыты ли порты брандмауэра, и, возможно, даже предложить пользователю разрешить ему открывать необходимые порты * автоматически *! Я знаю, я знаю, мое зрение превосходит мое понимание ....;) feetwet 6 лет назад 0
Некоторые вещи здесь не складываются. Во-первых, браузер использует UDP-порт 1434, а не 1433. Во-вторых, OP подтвердил, что он установил фиксированный порт TCP 1433 для своего экземпляра, поэтому в браузере sql нет необходимости. vic 6 лет назад 0
@vic - это может быть правдой, и это решение может добавить * больше, чем необходимо *, особенно если учесть, что мои предыдущие усилия привели меня. Я не могу проверить из «чистого» состояния, но я предполагаю, что если бы вы начинали с нуля с этой проблемой, это охватило бы все базы. feetwet 6 лет назад 0
1
vic

Откройте диспетчер конфигурации сервера Sql на WINTEN.

В конфигурации сети SQL Server выберите свой экземпляр MSSQL и проверьте настройки для TCP / IP.

Убедитесь, что протокол включен и сервер прослушивает порт 1433. (вкладка IP-адреса, раздел IPAll, поле TCP-порт )

Спасибо: во время попытки заставить это работать, я включил и установил тот порт. Я только добавил скриншот в ОП. (Я предполагаю, что без этого входящие соединения не будут работать даже с широко открытым брандмауэром.) feetwet 6 лет назад 0
Я предполагаю, что интерфейс «IP8» не имеет отношения к вам, потому что он явно не подключен к вашей сети. Итак, единственное, что я могу подумать, это попытаться удалить запись Динамические порты TCP, а затем перезапустить сервер. Кроме того, попробуйте подключиться с использованием IP-адреса и дайте мне знать, если вы получите то же сообщение об ошибке. vic 6 лет назад 0
Удаление записи TCP Dynamic Ports не сработало. Но я могу подключиться мгновенно, используя IP-адрес локальной сети сервера! Освещает ли это проблему (проблемы)? feetwet 6 лет назад 0
Вы можете исключить, что ваша проблема связана с SQL Server или соответствующими настройками брандмауэра. Я предполагаю, что вы находитесь не в домене, а в рабочей группе Windows, и поэтому вам необходимо открыть файлообменный порт Windows и порты Netbios на брандмауэре, чтобы это работало. Попробуйте открыть TCP / UDP 135-139 и TCP / UDP 445 для вашей частной зоны. vic 6 лет назад 0
@feetwet Есть ли у вас какие-либо новости о вашей ситуации? Если мои последние замечания помогли, я добавлю их в ответ, и мы сможем пометить проблему как решенную. vic 6 лет назад 0
Извините, только что вернулся к этой проблеме и этой машине: Вы правы, что она не находится в Домене; он входит в рабочую группу, и соединение классифицируется как «частное». Я просматриваю настройки брандмауэра и для этого «частного» профиля уже вижу Разрешить для программы «Система» по UDP 137, 138 и TCP 139, 445. Нужны ли другие? Должен быть лучший способ контролировать эти разрешения, чем вводить такие правила вручную. (Ни одна из других машин Windows 10 не имеет этой проблемы.) feetwet 6 лет назад 0