Увімкнути віддалені підключення для SQL Server Express 2012


403

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

Під час встановлення з'єднання з SQL-сервером сталася помилка, пов’язана з мережею або окремим екземпляром. Сервер не знайдено або був недоступний. Переконайтеся, що ім'я екземпляра правильне і що SQL Server налаштований для дозволу віддалених з'єднань. (постачальник: Named Pipes Provider, помилка: 40 - Не вдалося відкрити з'єднання з SQL Server)

Що я зробив, щоб спробувати виправити це:

  • Запустіть менеджер конфігурації SQL Server на сервері та увімкніть браузер SQL Server
  • Додайте виключення брандмауера Windows на сервері для TCP, порти 1433 та 1434 в локальній підмережі.
  • Перевірте, чи є у мене вхід на екземпляр SQL Server для користувача, на якому я ввійшов, як на робочому столі.
  • Переконайтеся, що я використовую автентифікацію Windows в екземплярі SQL Server.
  • Неодноразово перезапускайте SQL Server і весь сервер dang.
  • Витягніть все моє волосся.

Як я можу отримати SQL Server 2012 Express, щоб дозволити віддалені з’єднання !?


7
Я вирішив, включивши послугу браузера SQL Server: D. Дякуємо за публікацію
alansiqueira27

1
Розблокування 1433 UDP-порта допомогло мені!
Майкл

1
І якщо ви використовуєте Azure VM, не забудьте також відкрити порт через портал управління Azure (який виступає зовнішнім брандмауером для власного брандмауера VM ...). Як так: stackoverflow.com/questions/34251382 / ...
jleach

Для тих, хто цікавиться, куди зник сервер конфігурації сервера Sql у новіших версіях,
продовжуйте

Відповіді:


731

Ну, радий, що запитав . Нарешті я знайшов рішення:

Як налаштувати 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 Dynamic Ports є порожнім . (Моєму встановлено деякий 5-значний номер порту.)
  5. Переконайтеся, що для порту TCP встановлено 1433 . (Моя порожня.)

(Крім того, якщо виконувати ці кроки, не потрібно вмикати браузер SQL Server. Вам потрібно лише дозволити порт 1433, а не 1434.)

Ці додаткові п'ять кроків - це те, чого я не пам'ятаю, коли-небудь доводилося робити в попередній версії SQL Server, Express або іншим способом. Здається, вони були необхідними, оскільки я використовую на сервері названий екземпляр (ім'я сервера \ SQLEXPRESS) замість екземпляра за замовчуванням. Дивіться тут:

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


7
Якщо SQL Server Express не єдиний екземпляр, можливо, буде потрібно UNASSIGN-порт 1433 в інших випадках. У мене був екземпляр за замовчуванням 2008 року R2 (MSSQLSERVER), і єдиний спосіб, коли я можу підключитися до обох ззовні - це призначити порт 1433 екземпляру 2012 (на вище) та змінити призначення портів для старого екземпляра за замовчуванням на TCP Dynamic Ports = "0" і TCP Port = "" (пусто). З іншого боку, це дозволило отримати доступ лише до екземпляра за замовчуванням.
Роберт Калхун

17
Це IPAllналаштування було порадою РОЗВИТКУ! Моя була як ваша ...: D
Леніел Маккаферрі

18
У випадку, якщо це допомагає комусь іншому ... це допомогло, але я все одно не зміг підключитися, поки не запустив службу браузера SQL Server. (Примітка. Для цього мені довелося зайти в додаток Windows "Служби", оскільки тип запуску служби браузера SQL Server чомусь був "відключений". Змінив тип запуску на "Автоматичний", запустив службу, а потім в змозі підключитися.)
меркурій

9
У Windows 8 та SQL 2012 Express SP1, встановлених для екземпляра SQLEXPRESS, мені довелося встановити динамічні порти на будь-що, крім порожнього (якщо ви видалили його, встановіть значення 0, то він перерахує новий випадковий порт для вас), а також відкрийте BOTH TCP 1433 та правила вхідного порту UDP 1434 на панелі керування Advanced Advanced Firewall. Коли динамічні порти були порожніми, SQL Server просто завис при запуску.
Тоні Уолл

10
Просто хотів сказати подяку та підтримку. Ви зекономили мені багато часу. Ви не хочете оновлювати свою публікацію правильним синтаксисом підключення? Мені потрібно користуватися myserver\sqlexpress,[portnumber]без дужок. Зауважте, що це - ,ні,:
Марко

105

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

Використання ip та port замість названого екземпляра також безпечніше, оскільки зменшує площу поверхні атаки.

Можливо, 2 малюнки говорять 2000 слів ...

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

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

Цей метод вимагає відкриття порту UDP 1434 та запущеного браузера SQL Server ..

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


Чи можете ви детальніше сказати, що ви маєте на увазі, сказавши, що це "правильний" спосіб зробити це?
Райан Лунді

3
@Kyralessa Ha! ... тепер, коли я знову тверезий після 4-5 годин волосся, намагаючись підключитися до віддаленого екземпляра, я, мабуть, повинен пояснити, що "правильне" тут має бути прочитане з мого контексту. "Неправильно" підключатися за допомогою імені екземпляра, оскільки я не ввімкнув браузер SQL Server.
Росді Касім

Я доповнив своє пояснення до своєї відповіді, щоб уникнути непорозуміння.
Росді Касім

1
Дякую;) Якщо у вас немає доступу для запуску служби браузера, вам потрібно вказати порт.
Арман Макгітарін

3
плюс 1 за показ того, що MS використовує косу замість стовпців як роздільник для номера порту
Джордж

32

І ще одна річ...

"Kyralessa" надає чудову інформацію, але я маю ще одне додати, куди мене натрапили навіть після цієї статті.

У розділі Конфігурація мережі SQL Server> Протоколи для сервера> Увімкнено TCP / IP. Клацніть правою кнопкою миші TCP / IP та виберіть властивості. Під IP-адресами потрібно встановити параметр "Увімкнено" так для кожного типу з'єднання, який ви використовуєте.

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


18

Ви можете використовувати це для вирішення цієї проблеми:

Перейдіть до START> EXECUTE та запустіть CLICONFG.EXE.

Протокол Named Pipes буде першим у списку. Визначте його та просувайте TCP / IP.

Ретельно протестуйте додаток.

Я сподіваюся, що це допоможе.


Нічого собі, який коштовний камінь ... дякую. Ніколи не знав, що навіть існує.
Луї ван Тондер

1
Це налаштовує КЛІЄНТА використовувати TCP / IP, а не сервер.
mcr

OMG, це працює !! щойно увійшов, щоб проголосувати за цю відповідь. дякую
Акі

15

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

Слухай усіх НІ

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

увімкнено Так,

визначити yr IP-адресу,

встановіть TCP Dynamic на Blank і

TCP-порт до 1433 (або що завгодно)


Якщо це зробити в Windows 8.1 зі встановленим SQL 2012 Express SP1, SQL
завис

Я встановив усі записи IP 1, 2, ..., щоб увімкнути + активний, стерти динамічний, стираний порт та встановив порт IPAll на 1433, потім довелося додати правила для відкриття TCP 1433 та UPD 1434 в брандмауері (1434 не потрібно, якщо не використовується ім'я, а лише номер порту).
Мордахай

11

Ця стаття допомогла мені ...

Як увімкнути віддалені з'єднання в SQL Server

Все в SQL Server було налаштовано, моя проблема - брандмауер блокував порт 1433


Усі знають, чи легко натрапляє на конфігурацію портів, дозволених Azure. Не передумав, що порт може бути заблокований брандмауером WINDOWS VM. Дякую. + 1
2b77bee6-5445-4c77-b1eb-4df3e5

11

У мене ця проблема була нещодавно. 2015 серп

Вирішується шляхом відкриття менеджера конфігурації SQL Server

  • Конфігурація мережі SQL Server -> Протоколи для SQLEXPRESS
  • Властивості на вкладці TCP / IP -> IP адреси
  • Все залишається за замовчуванням, встановлено лише IPALL: TCP-порт на 1433

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

Приклад:

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


6

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


1
Швидка примітка: для мене це не спрацювало. Неправильний IP був чомусь там. Однак кроки Kyralessa зробили трюк, оскільки вони попросили оновити IP.
Брайан Маккей

Це працює для одного мого сервера, але не для іншого.
Чень

5

Мені довелося додати правило вхідного порту брандмауера, щоб відкрити порт UDP 1434. Це той сервер, який слухає браузер Sql.


3

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

Я обов'язково забуду це знову, коли спробую знову підняти інший сервер.

Зробіть це просто глупо (KISS), просто увімкніть сервер браузера Sql Server, а потім додайте \ SQLEXPRESS за IP під час підключення до сервера.

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

Дякую.


3

У мене була така ж проблема з локально встановленим ім'ям екземпляра 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 або труби з іменем запитуваного екземпляра.


2

Мені довелося додати порт через Менеджер конфігурацій і додати номер порту в моєму з'єднанні sql [host] \ [db instance name], 1433

Зауважте, (кома) між ім'ям екземпляра та портом


1

У мене була інша проблема, ніж у всіх відповідях досі!

Я повинен почати з того, що я мав це у Visual Studio, а не в SQL Server Express, але рішення повинно бути точно таким же.

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

Насправді це насправді було моїм іменем Windows + \SQLEXPRESS. Якщо ви не змінили жодних налаштувань, це, мабуть, і ваше. Якщо це працює, припиніть читати; це моя відповідь. Якщо це не працює, можливо, назва інша.

Якщо, як і я, у вас виникла ця проблема лише в Visual Studio, щоб перевірити, що ваше, виконайте наступні дії:

  1. Відкрийте значок студії управління SQL Server .
  2. Якщо ви не бачите свій сервер (стикується ліворуч за замовчуванням), натисніть F8або перейдіть до Перегляд -> Провідник об'єктів .
  3. Клацніть правою кнопкою миші ім’я сервера та виберіть Властивості (Останній пункт)
  4. У нижньому лівому куті ви бачите фактичне ім'я вашого сервера під " Сервер " (не "З'єднання, а над ним").

Це ім'я сервера, і це те, до чого слід намагатися підключитися! не те, що пропонує Visual Studio!



1

У моєму випадку база даних працює на нестандартному порту. Переконайтеся, що порт, до якого ви підключаєтесь, такий самий, як порт, на якому працює база даних. Якщо є більше екземплярів SQL-сервера, перевірте правильність.


0

Все, що вам потрібно зробити, це відкрити відповідний порт на брандмауері сервера.


6
На жаль, це не "все, що вам потрібно зробити". Існує ще кілька інших кроків, які необхідно зробити, як зазначено у прийнятій відповіді вище.
салюс

2
Насправді, в моєму випадку це БУЛО все, що мені потрібно було зробити, настільки несправедливо позначене і фактично корисне введення.
MagicalArmchair

1
Додавання правила до відкритого порту 1433 було для мене виправленим.
GiddyUpHorsey

Я думаю, що справедливо сказати, що "багато речей повинно бути вирівняно, які додаткові кроки необхідні для вас будуть різними"
Mordachai

Мені доводилося робити все, що стосується Kyralessa, і Pete, так і це, перш ніж я міг отримати Windows 10, що обслуговує SQL.
alfadog67

0

Виникли проблеми з підключенням до SQL Server?

Спробуйте відключити брандмауер.

Якщо ви можете підключитися з відключеним брандмауером, можливо, ви пропустили деякі правила введення, як-от "брокер служби sql", додайте ці правила введення до брандмауера:

TCP PORT 1434 "SQL ADMIN CONNECTION" TCP PORT

"SQL ADMIN CONNECTION" UDP PORT 1434

TCP PORT 2383 "SQL ANALYSIS SERVICE"

"SQL BROWSE ANALYSIS SERVICE" TCP PORT 2382

TCP PORT 135 "SQL DEBUGGER / RPC" 135

"SQL SERVER" TCP PORT 1433 та інші, якщо у вас є динамічні порти

"SQL SERVICE BROKER" TCP PORT 4022

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.