У мене була така ж проблема з локально встановленим ім'ям екземпляра 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 Server у встановленні зв’язків; У мене склалося враження, що це просто допомогло заповнити спадні списки, коли ви натиснули сервери "переглянути більше" для підключення, але це фактично допомагає вирівняти клієнтські запити з правильним номером порту #, який використовується, якщо порт # явно не призначений (подібне як прив'язки веб-сайтів допомагають полегшити ту саму проблему на веб-сервері IIS, на якому розміщено кілька веб-сайтів).
Цей елемент підключення - це те, що дало мені підказку щодо служби браузера SQL Server: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine- назва
- коли ви використовуєте 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 або названа труба) .
- Будь-який компонент, який генерує або передає інформацію про сервер \ екземпляр, яку згодом можуть використовувати інші компоненти для підключення.
- Підключення до названого екземпляра без надання номера порту або труби.
- ЦАП для іменованого екземпляра або екземпляра за замовчуванням, якщо не використовується порт 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 або труби з іменем запитуваного екземпляра.