Включить удаленные подключения для SQL Server Express 2012

Я только что установил SQL Server Express 2012 на своем домашнем сервере. Я пытаюсь подключиться к нему из Visual Studio 2012 с моего настольного ПК и неоднократно получаю известную ошибку:

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

Что я сделал, чтобы исправить это:

  • Запустите диспетчер конфигурации SQL Server на сервере и включите браузер SQL Server
  • Добавить исключение брандмауэра Windows на сервере для TCP, портов 1433 и 1434 в локальной подсети.
  • Убедитесь, что у меня есть логин в экземпляре SQL Server для пользователя, на который я зарегистрирован как на рабочем столе.
  • Убедитесь, что я использую проверку подлинности Windows на экземпляре SQL Server.
  • Неоднократно перезапускайте SQL Server и весь сервер dang.
  • Вытяните все мои волосы.

Как я могу заставить SQL Server 2012 Express разрешать удаленные подключения?

Ответ 1

Хорошо, рад, что я спросил. Решение, которое я, наконец, обнаружил, было здесь:

Как настроить SQL Server Express для разрешения удаленных подключений tcp/ip на порту 1433?

  • Запустите диспетчер конфигурации SQL Server.
  • Перейдите в конфигурацию сети SQL Server > Протоколы для SQLEXPRESS.
  • Убедитесь, что TCP/IP включен.

До сих пор так хорошо и полностью ожидалось. Но тогда:

  • Щелкните правой кнопкой мыши по TCP/IP и выберите Свойства.
  • Убедитесь, что в IP2 IP-адрес установлен на IP-адрес компьютера в локальной подсети.
  • Прокрутите вниз до IPAll.
  • Убедитесь, что Динамические порты TCP . (Mine был установлен на 5-значный номер порта.)
  • Убедитесь, что Порт TCP установлен на 1433. (Мой был пустым.)

(Кроме того, если вы выполните следующие действия, нет необходимости включать SQL Server Browser, и вам нужно разрешить только порт 1433, а не 1434.)

Эти дополнительные пять шагов - это то, что я не помню, когда-либо приходилось делать в предыдущей версии SQL Server, Express или иначе. Кажется, они были необходимы, потому что я использую именованный экземпляр (myservername\SQLEXPRESS) на сервере вместо экземпляра по умолчанию. См. Здесь:

Настройка сервера для прослушивания на определенном TCP-порту (диспетчер конфигурации SQL Server)

Ответ 2

Правильный способ подключения к удаленному SQL Server (без открытия UDP-порта 1434 и включения браузера SQL Server) заключается в использовании ip и вместо именованного экземпляра.

Использование ip и порта вместо именованного экземпляра также более безопасно, так как оно уменьшает площадь поверхности атаки.

Возможно, 2 картинки говорят на 2000 слов...

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

enter image description here

Этот метод требует открытия UDP-порта 1434 и браузера SQL Server.

enter image description here

Ответ 3

Еще одна вещь...

Kyralessa предоставляет отличную информацию, но у меня есть еще одна вещь, чтобы добавить, где я был в тупик даже после этой статьи.

В разделе Конфигурация сети SQL Server > Протоколы для серверa > Включено TCP/IP. Щелкните правой кнопкой мыши TCP/IP и выберите свойства. В разделе "IP-адреса" вам необходимо установить "Включено" "Да" для каждого используемого типа подключения.

enter image description here

Ответ 4

Вы можете использовать это для решения этой проблемы:

Перейдите к START > EXECUTE и запустите CLICONFG.EXE.

Протокол Named Pipes будет первым в списке. Прочтите его и продвиньте TCP/IP.

Протестируйте приложение полностью.

Я надеюсь, что эта помощь.

Ответ 5

Вы также можете установить

Прослушать все до NO

в диалоговом окне протокола, затем в IP-адресе IP1 (скажем)

установлено значение Да,

определить yr IP-адрес,

установить TCP Dynamic в Blank и

Порт TCP до 1433 (или что-то еще)

Ответ 6

У меня была эта проблема в последнее время. 2015 авг

Решено, открыв Диспетчер конфигурации SQL Server

  • Конфигурация сети SQL Server → Протоколы для SQLEXPRESS
  • Свойства на вкладке "Адресаты TCP/IP → IP"
  • Все остается по умолчанию, установите IPALL: TCP-порт на 1433

Можно подключиться к Диспетчер SQL Server к машине: [hostaddress], 1433

Пример:

введите описание изображения здесь

Ответ 8

При установке SQL Server 2012 Developer Edition, установленной с настройками по умолчанию, мне просто пришлось загрузить диспетчер конфигурации SQL Server → Конфигурация сети SQL Server → Протоколы для MSSQLSERVER и изменить TCP/IP с отключенного на Включено.

Ответ 9

Мне пришлось добавить правило входящего порта брандмауэра, чтобы открыть UDP-порт 1434. Это один браузер Sql Server Browser.

Ответ 10

Я предпочитаю вариант "Росди Касим", так как это не требует детальной конфигурации на IP.

Я обязательно забуду это снова, когда снова попытаюсь запустить еще один сервер.

Держите его просто глупо (KISS), просто включите службу Sql Server Browser, а затем добавьте \SQLEXPRESS за IP при подключении сервера.

Прямое использование IP без "\ SQLEXPRESS" было моей точкой отказа, поскольку он не использует порт по умолчанию.

Спасибо.

Ответ 11

У меня была такая же проблема с локально установленным именованным экземпляром SQL Server 2014. Соединение с использованием FQDN\InstanceName завершится неудачно, при этом будет работать только мой hostname\InstanceName. Например: соединение с использованием mycomputername\sql2014 сработало, но с помощью mycomputername.mydomain.org\sql2014 этого не произошло. DNS разрешен правильно, TCP/IP включен в SQL Configuration Manager, добавлены правила брандмауэра Windows (а затем отключен брандмауэр для тестирования, чтобы убедиться, что он ничего не блокирует), но ни одна из них не устранила проблему.

Наконец, мне пришлось запустить службу " SQL Server Browser" на SQL Server и устранить проблему с подключением.

Я никогда не понимал, что служба SQL Server Browser фактически помогла SQL Server в создании соединений; У меня создалось впечатление, что он просто помог заполнить выпадающие списки, когда вы нажимали "просматривать больше" серверов для подключения, но на самом деле это помогает согласовать клиентские запросы с правильным портом # для использования, если порт # явно не назначен (аналогично как привязки веб-сайтов помогают облегчить эту проблему на веб-сервере IIS с несколькими веб-сайтами).

Этот элемент соединения - это то, что подсказывало мне о службе SQL Server Browser: 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 name (wstst05) и рассматривает соединение "remote". Это по дизайну, и мы обязательно рассмотрим это будущее. Во всяком случае, из-за рассмотрения удаленного подключения и факта что это именованный экземпляр, клиент решает, что он должен использовать SQLBrowser для разрешения имен. Он пытается связаться с браузером SQL на wstst05.capatest.local(UDP-порт 1434) и, по-видимому, эта часть терпит неудачу. Отсюда ошибка, которую вы получаете.

Причина использования службы "SQL Server Browser" из TechNet (выделено мной мной): https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx

В разделе "Использование браузера SQL Server":

Если служба просмотра SQL Server не запущена, вы все еще можете для подключения к SQL Server, если вы указали правильный номер порта или именованный канал. Например, вы можете подключиться к экземпляру по умолчанию SQL Server с TCP/IP, если он работает на порту 1433. Однако if служба браузера SQL Server не работает, следующее соединения не работают:

  • Любой компонент, который пытается подключиться к именованному экземпляру без полного указания всех параметров (например, порт TCP/IP или имени труба).
  • Любой компонент, который генерирует или передает информацию об экземпляре сервера \, которая впоследствии может быть использована другими компонентами для повторного подключения.
  • Подключение к именованному экземпляру без указания номера порта или канала.
  • ЦАП для именованного экземпляра или экземпляра по умолчанию, если не используется порт TCP/IP 1433.
  • Служба перенаправления OLAP.
  • Перечисление серверов в SQL Server Management Studio, Enterprise Manager или Query Analyzer.

Если вы используете SQL Server в сценарии клиент-сервер (например, когда ваше приложение обращается к SQL Server по сети), if вы останавливаете или отключите службу браузера SQL Server, вы должны назначить конкретный номер порта для каждого экземпляра и написать свой клиент код приложения, чтобы всегда использовать этот номер порта. Этот подход имеет следующие проблемы:

  • Вы должны обновить и поддерживать код клиентского приложения, чтобы убедиться, что он подключен к соответствующему порту.
  • Порт, который вы выбираете для каждого экземпляра, может использоваться другой службой или приложением на сервере, в результате чего экземпляр SQL Сервер недоступен.

И больше информации из той же статьи из раздела "Как работает браузер SQL Server":

Поскольку только один экземпляр SQL Server может использовать порт или канал, разные номера портов и имена труб назначаются для имени экземпляров, включая SQL Server Express. По умолчанию, когда, оба именованных экземпляра и SQL Server Express настроены на использовать динамические порты, то есть доступный порт назначается, когда SQL Сервер запускается. Если вы хотите, конкретный порт может быть назначен экземпляр SQL Server. При подключении клиенты могут указать конкретный порт; но если порт динамически назначен, порт число может меняться в любое время, когда SQL Server перезапускается, поэтому правильный порт номер неизвестен клиенту.... Когда запросы клиентов SQL Server Ресурсы SQL Server, сетевая библиотека клиента отправляет сообщение UDP на сервер с использованием порта 1434. Браузер SQL Server отвечает TCP/IP или именованный канал запрашиваемого экземпляра. Сеть библиотеки в клиентском приложении затем завершает соединение отправка запроса на сервер с использованием порта или именованного канала желаемый экземпляр

Ответ 12

Мне пришлось добавить порт через Configuration Manager и добавить номер порта в моем SQL-соединении [host]\[имя экземпляра db], 1433

Обратите внимание, что (запятая) между instancename и портом

Ответ 13

У меня была другая проблема, из-за которой все ответы были упомянуты до сих пор!

Я должен начать, сказав, что у меня это было в Visual Studio, а не в SQL Server Express, но решение должно быть точно таким же.

Ну, боже, это на самом деле очень просто и, может быть, немного глупо. Когда я попытался создать базу данных, а Visual Studio предложила имя SQL Server, она дала мне свое имя пользователя Windows и, поскольку оно на самом деле было именем сервера, я пошел на это.

На самом деле это было мое имя пользователя Windows + \SQLEXPRESS. Если вы не изменили никаких настроек, это, вероятно, тоже. Если он работает, прекратите чтение; это мой ответ. Если это не работает, возможно, имя отличается.

Если, как и я, у вас была только эта проблема в Visual Studio, чтобы проверить, что именно вы делаете, выполните следующие действия:

  • Откройте SQL Server Management Studio значок.
  • Если вы не видите свой сервер (по умолчанию по умолчанию слева), нажмите F8 или перейдите в Вид → Обозреватель объектов.
  • Щелкните правой кнопкой мыши имя сервера и выберите Свойства (последний элемент)
  • В левом нижнем углу вы можете увидеть фактическое имя своего сервера в разделе Сервер "(не соединение, но выше).

Это имя сервера, и с этим вы должны пытаться подключиться! не то, что предлагает Visual Studio!

Ответ 14

В моем случае база данных работала на нестандартном порту. Убедитесь, что порт, который вы подключаете, совпадает с портом, на котором запущена база данных. Если есть больше экземпляров SQL-сервера, проверьте правильность.

Ответ 15

Все, что вам нужно сделать, это открыть соответствующий порт на брандмауэре сервера.