Подтвердить что ты не робот

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

Исходная попытка

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

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

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

Произошла ошибка, связанная с сетью или конкретным экземпляром, в то время как установление соединения с SQL Server. Сервер не найден или был недоступен. Проверьте правильность имени экземпляра и SQL Server настроен для удаленного подключения. (поставщик: Именованный Pipes Provider, ошибка: 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 для проверки подключения (cmd ping не работает быстро с 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 Configuration Manager > Конфигурация сети 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
  • са
  • пароль

Success.

4b9b3361

Ответ 1

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

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

Устранение неполадок подключения к SQL Server Database Engine. Внимательно прочитав это, мы предоставили еще 50% ответа.

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

Ответ 2

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

tcp:name.cloudapp.net,1433

Ответ 3

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

  • Убедитесь, что SQL Express настроен для проверки подлинности SQL, а также для проверки подлинности Windows (по умолчанию). Вы выполняете это с помощью свойств/безопасности сервера SQL Server Management Studio (SSMS)
  • В SSMS создайте новый логин под названием "sqlUser", скажем, с подходящим паролем "sql", скажем. Убедитесь, что этот новый логин установлен для проверки подлинности SQL, а не для проверки подлинности Windows. Безопасность/логины сервера SSMS/Свойства/Общие. Также убедитесь, что политика "Принудительная политика паролей" не отмечена.
  • В разделе "Свойства/Роли сервера" этот новый пользователь имеет роль "sysadmin"
  • В SSCM диспетчера конфигурации SQL Server (поиск файла SQLServerManagerxx.msc в Windows\SysWOW64, если вы не можете найти SSCM) в SQL Server Network Configuration/Protocols для SQLExpress убедитесь, что TCP/IP включен. Вы можете отключить именованные каналы, если хотите
  • Щелкните правой кнопкой мыши по протоколу TCP/IP и на вкладке IPAddresses, убедитесь, что для каждого из IP-адресов установлено значение "Включено да" и TCP-порт 1433 (это порт по умолчанию для SQL Server).
  • В брандмауэре Windows (WF.msc) создайте два новых правила входа: один для SQL Server и другой для службы браузера SQL. Для SQL Server вам нужно открыть TCP-порт 1433 (если вы используете порт по умолчанию для SQL Server) и очень важно для службы просмотра SQL, вам нужно открыть UDP-порт 1434. Назовите эти два правила соответствующим образом в своем брандмауэре.
  • Остановить и перезапустить службу SQL Server с помощью оснастки SSCM или оснастки Services.msc
  • В оснастке Services.msc убедитесь, что тип запуска SQL Browser Service является автоматическим, а затем запустите эту службу.

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