У меня была такая же проблема с локально установленным именованным экземпляром SQL Server 2014. Подключение с использованием FQDN\InstanceName
не удалось, а подключение с использованием только моего hostname\InstanceName
работало. Например: подключение с использованием mycomputername\sql2014
работало, а с использованием mycomputername.mydomain.org\sql2014
- нет. DNS разрешен правильно, TCP / IP был включен в диспетчере конфигурации SQL, добавлены правила брандмауэра Windows (а затем отключен брандмауэр для тестирования, чтобы убедиться, что он ничего не блокирует), но ни один из них не устранил проблему.
Наконец, мне пришлось запустить службу Браузер SQL Server на SQL Server, и это устранило проблему с подключением.
Я никогда не понимал, что служба браузера SQL Server на самом деле помогает серверу SQL устанавливать соединения; У меня создалось впечатление, что это просто помогло заполнить раскрывающиеся списки, когда вы щелкнули по поиску дополнительных серверов для подключения, но на самом деле это помогает согласовать клиентские запросы с правильным номером порта для использования, если номер порта явно не назначен (аналогично тому, как привязки веб-сайтов помогают решить ту же проблему на веб-сервере IIS, на котором размещено несколько веб-сайтов).
Этот элемент подключения дал мне представление о службе браузера SQL Server: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine-name < / а>
- когда вы используете wstst05 \ sqlexpress в качестве имени сервера, клиентский код отделяет имя компьютера от имени экземпляра, и wstst05 сравнивается с именем netbios. Я не вижу проблем, чтобы они совпадали, и соединение считается локальным. Отсюда мы получаем необходимую информацию БЕЗ связи с браузером SQL и без проблем подключаемся к экземпляру SQL через общую память.
- когда вы используете wstst05.capatest.local \ sqlexpress, клиентский код не выполняет сравнение имени (wstst05.capatest.local) с именем netbios (wstst05) и считает соединение удаленным. Это сделано специально, и мы обязательно рассмотрим возможность улучшения в будущем. В любом случае, учитывая удаленное соединение и тот факт, что это именованный экземпляр, клиент решает, что ему необходимо использовать SQLBrowser для разрешения имен. Он пытается связаться с браузером SQL на wstst05.capatest.local (порт UDP 1434) и, по-видимому, эта часть не работает. Следовательно, вы получаете ошибку.
Причина использования службы браузера SQL Server от TechNet (выделено мной): https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx
В разделе Использование браузера SQL Server:
Если служба обозревателя SQL Server не запущена, вы все равно можете подключиться к SQL Server, если укажете правильный номер порта или именованный канал. Например, вы можете подключиться к экземпляру SQL Server по умолчанию с помощью TCP / IP, если он работает на порту 1433. Однако, если служба браузера SQL Server не запущена, следующие подключения не работают :
- Любой компонент, который пытается подключиться к именованному экземпляру без полного указания всех параметров (таких как порт TCP / IP или именованный канал).
- Любой компонент, который генерирует или передает информацию о сервере \ экземпляре, которая позже может быть использована другими компонентами для повторного подключения.
- Подключение к именованному экземпляру без указания номера порта или канала.
- DAC к именованному экземпляру или экземпляру по умолчанию, если не используется порт TCP / IP 1433.
- Служба перенаправления OLAP.
- Перечисление серверов в SQL Server Management Studio, Enterprise Manager или Query Analyzer.
Если вы используете SQL Server в сценарии клиент-сервер (например, когда ваше приложение обращается к SQL Server по сети), если вы останавливаете или отключаете службу браузера SQL Server, вы должны назначить конкретный номер порта для каждый экземпляр и напишите код клиентского приложения, чтобы всегда использовать этот номер порта. У этого подхода есть следующие проблемы:
- Вы должны обновлять и поддерживать код клиентского приложения, чтобы убедиться, что оно подключается к правильному порту.
- Порт, который вы выбираете для каждого экземпляра, может использоваться другой службой или приложением на сервере, в результате чего экземпляр SQL Server будет недоступен.
И дополнительная информация из той же статьи из раздела Как работает браузер SQL Server:
Поскольку только один экземпляр SQL Server может использовать порт или канал, именованным экземплярам, включая SQL Server Express, назначаются разные номера портов и имена каналов. По умолчанию, когда этот параметр включен, и именованные экземпляры, и SQL Server Express настроены на использование динамических портов, то есть доступный порт назначается при запуске SQL Server. При желании можно назначить конкретный порт экземпляру SQL Server. При подключении клиенты могут указать конкретный порт; но если порт назначается динамически, номер порта может измениться при перезапуске SQL Server, поэтому правильный номер порта неизвестен клиенту. ... Когда клиенты SQL Server запрашивают ресурсы SQL Server, клиентская сетевая библиотека отправляет сообщение UDP на сервер, используя порт 1434. Браузер SQL Server отвечает портом TCP / IP или именованным каналом запрошенного экземпляра. Затем сетевая библиотека в клиентском приложении завершает соединение, отправляя запрос на сервер, используя порт или именованный канал желаемого экземпляра.
person
BateTech
schedule
20.10.2015