it-swarm.com.ru

Используйте SQL Server Management Studio для удаленного подключения к экземпляру SQL Server Express, размещенному на виртуальной машине Azure.

Начальная попытка

У меня есть Azure VM с Windows Server 2012, на котором я только что установил компонент SQL Server 2012 Express Database Engine. Затем я следовал инструкциям здесь для удаленного подключения к SQL Server Management Studio.

  1. Создайте конечную точку TCP для виртуальной машины.
  2. Откройте TCP порты в брандмауэре Windows
  3. Настройте SQL Server для прослушивания протокола TCP
  4. Настройка SQL Server для проверки подлинности в смешанном режиме
  5. Создание учетных записей аутентификации SQL Server
  6. Определить DNS-имя виртуальной машины
  7. Подключитесь к компоненту Database Engine с другого компьютера

После седьмого шага я получил следующую ошибку:

Во время установления соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server) (Microsoft SQL Server, ошибка: 53)

Что еще мне нужно настроить перед удаленным подключением?

Поиск проблемы

Я следовал инструкциям по устранению неполадок здесь . Каждая цитата ниже представляет собой шаг, описанный в этой ссылке.

Убедитесь, что экземпляр компонента SQL Server Database Engine установлен и работает.

Готово. Мы установили SQL Server Express, и он работает как именованный экземпляр с именем SQLEXPRESS.

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

Готово. Мы следовали инструкциям здесь , чтобы включить службу браузера SQL Server.

Получить IP-адрес компьютера.

Готово. Мы будем использовать их позже для тестирования подключения и, возможно, для настройки статического порта для SQLEXPRESS.

10.241.62.155

fe80 :: 45c: 8c29: e19f: f78b% 15

Получите номер порта TCP, используемый SQL Server.

Готово. Журналы сервера SQL Server Management Studio показали, что сервер прослушивал порт 49169.

Включить протоколы

Готово. Мы уже включили TCP/IP в диспетчере конфигурации, но на всякий случай перезапустили службу SQL Server.

Тестирование соединения TCP/IP

Готово. Мы использовали tcping.exe для проверки подключения (команда pd не работает быстро с Azure.) Мы смогли подключиться к порту 80.

  • tcping.exe buddha.cloudapp.net> успешно
  • tcping.exe buddha.cloudapp.net 80> успешно

Тестирование локального соединения

Готово. Мы использовали sqlcmd.exe из командной строки и смогли локально подключиться через TCP с именем пользователя и паролем.

  • sqlcmd -S Buddha\SQLEXPRESS (успех по протоколу общей памяти)
  • sqlcmd -S tcp: Buddha\SQLEXPRESS (успех через TCP)
  • sqlcmd -S tcp: Buddha\SQLEXPRESS -U sa -P (успех через TCP с именем пользователя)
  • sqlcmd -S tcp: 10.241.62.155\SQLEXPRESS -U sa -P (успех с внутренним IP)

Открытие порта в брандмауэре

Мы открыли порт, который слушает SQLEXPRESS. Журналы сервера (выше) показали, что SQLEXPRESS прослушивал порт 49169, но это только один из многих динамических портов, и мы хотели настроить статический порт 1435.

  • Используйте WF.msc для создания входящего правила TCP для порта 1435.
  • Используйте портал управления Azure для создания конечной точки TCP для порта 1435.

В инструкциях по устранению неполадок также сказано:

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

Поскольку мы подключаем SQLEXPRESS (именованный экземпляр), нам нужно было открыть порт 1434 для UDP.

  • Используйте WF.msc для создания входящего UCP правила для порта 1434.
  • Используйте портал управления Azure для создания UDP конечной точки для порта 1434

Дальнейшие исследования о подключении к именованным экземплярам выявили проблемы с динамическим портом. Причина, по которой мы используем порт 1435 (статический) вместо порта 49169 (один из многих эффективных вариантов).

Экземпляры SQL Server Express, SQL Server Compact и именованные экземпляры компонента Database Engine используют динамические порты. Чтобы настроить эти экземпляры для использования определенного порта, см. Настройка сервера для прослушивания определенного порта TCP (диспетчер конфигурации SQL Server). и здесь ,.

Готово. Мы перешли к "Диспетчер конфигурации SQL"> "Настройка сети SQL Server"> "Протоколы для SQLEXPRESS"> "TCP/IP" и сделали следующее.

Вкладка "Протокол"> "Прослушать все"> "Нет".

Вкладка IP-адреса> для каждого указанного адреса

  • Включено> Да
  • Динамические порты TCP> Пусто (удалить ноль)
  • Порт TCP> 1435 (или ваш выбор)

После перезапуска службы SQLEXPRESS мы снова просмотрели журналы SQL Server Management Studio и обнаружили, что сервер прослушивает порт 1435 !!! Ура!

Тестирование соединения

Готово. Мы открыли SQL Server Management Studio на нашем локальном (не Azure) компьютере и подключились.

  • buddha.cloudapp.net, 1435 OR buddha.cloudapp.net\SQLEXPRESS
  • са
  • пароль

Успех.

54
Shaun Luttin

Вот три веб-страницы, на которых мы нашли ответ. Самым сложным было настроить статические порты для SQLEXPRESS.

Подготовка виртуальной машины SQL Server в Windows Azure . Эти первоначальные инструкции дали 25% ответа.

Как устранить неполадки подключения к ядру базы данных SQL Server . Внимательно прочитав это, вы получили еще 50% ответа.

Как настроить SQL-сервер для прослушивания разных портов на разных IP-адресах? . Это позволило настроить статические порты для именованных экземпляров (например, SQLEXPRESS.). Нам потребовались последние 25% пути к ответу.

17
Shaun Luttin

Тот факт, что вы получаете сообщение об ошибке от провайдера Names Pipes, говорит нам о том, что вы не используете протокол TCP/IP, когда пытаетесь установить соединение. Попробуйте добавить префикс "tcp" и указать номер порта:

tcp:name.cloudapp.net,1433
14
Paul Keister

Я тоже боролся с чем-то похожим. Я предполагаю, что ваша настоящая проблема заключается в подключении к экземпляру SQL Express, запущенному на другом компьютере. Шаги для этого можно суммировать следующим образом:

  1. Убедитесь, что SQL Express настроен для аутентификации SQL, а также для аутентификации Windows (по умолчанию). Вы делаете это через SQL Server Management Studio (SSMS) Свойства сервера/Безопасность
  2. В SSMS создайте новый логин с именем "sqlUser", скажем, с подходящим паролем, "sql", скажем. Убедитесь, что этот новый логин установлен для аутентификации SQL, а не для аутентификации Windows. SSMS Server Security/Логины/Свойства/Общие. Также убедитесь, что "Принудительная политика паролей" снята
  3. В разделе "Свойства/Роли сервера" убедитесь, что у этого нового пользователя есть роль "sysadmin".
  4. В SSCM диспетчера конфигурации SQL Server (найдите файл SQLServerManagerxx.msc в Windows\SysWOW64, если вы не можете найти SSCM) в разделе Конфигурация сети SQL Server/Протоколы для SQLExpress, убедитесь, что TCP/IP включен. Вы можете отключить именованные каналы, если хотите
  5. Щелкните правой кнопкой мыши по протоколу TCP/IP и на вкладке IP-адреса убедитесь, что для каждого из IP-адресов установлено значение Включено Да и TCP Порт 1433 (это порт по умолчанию для SQL Server).
  6. В брандмауэре Windows (WF.msc) создайте два новых правила для входящих подключений - одно для SQL Server, а другое для службы обозревателя SQL. Для SQL Server вам нужно открыть TCP порт 1433 (если вы используете порт по умолчанию для SQL Server) и что очень важно для службы браузера SQL, вам нужно открыть UDP-порт 1434 , Назовите эти два правила соответствующим образом в вашем брандмауэре
  7. Остановите и перезапустите службу SQL Server, используя SSCM или оснастку Services.msc.
  8. В оснастке Services.msc убедитесь, что тип запуска службы браузера SQL имеет значение "Автоматически", а затем запустите эту службу

На этом этапе вы должны иметь возможность удаленного подключения, используя аутентификацию SQL, пароль "sqlUser" пользователя "sql" к экземпляру SQL Express, настроенному, как указано выше. Последний совет и простой способ проверить это - создать пустой текстовый файл с расширением .UDL, скажем, "Test.UDL" на рабочем столе. Двойной щелчок для редактирования этого файла вызывает диалоговое окно свойств ссылки на данные Microsoft, с помощью которого вы можете быстро протестировать удаленное соединение SQL

3
JohnB