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

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

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

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

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

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

16 ответов


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

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

  1. запустите Диспетчер конфигурации SQL Server.
  2. перейдите в раздел Конфигурация сети SQL Server > протоколы для SQLEXPRESS.
  3. убедитесь, что TCP / IP включен.

до сих пор, так хорошо, и полностью ожидалось. Но затем:

  1. щелкните правой кнопкой мыши TCP / IP и выберите свойства.
  2. убедитесь, что в разделе IP2 IP-адрес установлен на IP-адрес компьютера в локальной подсети.
  3. прокрутите вниз до IPAll.
  4. убедитесь в том, что динамические порты TCP is пробел. (У меня был установлен какой-то 5-значный номер порта.)
  5. убедитесь в том, что TCP-порт установлено значение 1433. (Мой был пусто.)

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

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

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


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

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

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

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

enter image description here

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

enter image description here


Еще Одна Вещь...

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

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

enter image description here


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

перейдите в меню Пуск > Выполнить и запустите CLICONFG.ИСПОЛНЯЕМЫЙ.

протокол именованных каналов будет первым в списке.Понизьте его и повысьте TCP / IP.

тщательно протестируйте приложение.

надеюсь, это поможет.


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

слушайте все NO

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

установить включено в Да,

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

установите TCP Dynamic на пустой и

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


недавно у меня была эта проблема. 2015 Aug

решена путем открытия диспетчер конфигурации SQL Server

  • конфигурация сети SQL Server - > протоколы для SQLEXPRESS
  • свойства на TCP / IP - > вкладка IP-адреса
  • все остается по умолчанию, только установите Ipall: TCP-порт в 1433

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

пример:

enter image description here


эта статья помогла мне...

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

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


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


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


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

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

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

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

спасибо.


у меня была та же проблема с локально установленным именованным экземпляром SQL Server 2014. Подключение с помощью FQDN\InstanceName не удалось бы при подключении, используя только my 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-name

  • при использовании wstst05\sqlexpress в качестве имени сервера клиентский код разделяется имя машины из имени экземпляра и wstst05 по сравнению с именем netbios. Я не вижу никаких проблем для них, чтобы соответствовать причем соединение считается локальным. Оттуда мы извлекаем необходимая информация без связаться с браузером SQL и подключиться к Экземпляр SQL через общую память без каких либо проблем.
  • при использовании wstst05.капатест.локальный\sqlexpress, код клиента не удается сравнить имя (wstst05.капатест.местный) к netbios-имя (wstst05) и считает соединение "удаленным". Это по дизайну и мы определенно рассмотрим улучшать это в будущее. Во всяком случае, из-за рассмотрения удаленного подключения и факта что это именованный экземпляр, клиент решает, что он должен использовать SQLBrowser для разрешения имен. Он пытается связаться с SQL Browser на wstst05.капатест.локальный (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. Однако,если служба обозревателя SQL Server не запущена, следующее соединения не работают:

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

если вы используете SQL Server в сценарии клиент-сервер (например, когда ваше приложение доступ к SQL Server по сети),если остановите или отключите службу браузера 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 или именованный канал запрашиваемого экземпляра. Сеть затем библиотека в клиентском приложении завершает соединение с помощью отправка запроса на сервер с использованием порта или именованного канала желаемый экземпляр


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

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


у меня была другая проблема от того, что все ответы до сих пор!

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

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

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

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

  1. открыть управление SQL-сервера Студиязначок.
  2. если вы не видите ваш сервер (закрепленный слева по умолчанию), нажмите ф8 или перейти к Вид -> Обозреватель Объектов.
  3. Правой Кнопкой Мыши на имени сервера и выберите свойства (последний пункт)
  4. в левом нижнем углу вы можете увидеть фактическое имя вашего сервера в разделе"сервер" (не соединение, но выше он.)

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


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


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


еще одна вещь, чтобы проверить, что вы правильно именованный экземпляр!

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