Чому я отримую "Не вдається підключитися до сервера - помилка, пов’язана з мережею або конкретною інстанцією"?


378

Я отримую таку помилку при спробі підключення до SQL Server:

Не вдається підключитися до 108.163.224.173.

Під час встановлення з'єднання з SQL-сервером сталася помилка, пов’язана з мережею або окремим екземпляром.

Сервер не знайдено або був недоступний. Переконайтеся, що ім'я екземпляра правильне і що SQL Server налаштований для дозволу віддалених з'єднань.

(постачальник: Named Pipes Provider, помилка: 40 - Не вдалося відкрити з'єднання з SQL Server) (Microsoft SQL Server, помилка: 1326)

Ця помилка викидається, коли я намагаюся налаштувати свою базу даних на перегляд сітки в Visual Studio 2010. Я втрачаю проблеми щодо того, як налагодити цю помилку.

Як би ви налагодили цю помилку? Які кроки я повинен зробити для того, щоб визначити, що насправді відбувається тут, окрім зазначеного у повідомленні про помилку?


11
Ping не є надійним для тестування підключення до SQL Server, ICMP-запит ехо вимкнено за замовчуванням у Windows Server. Недійсне ім’я користувача або пароль - це зовсім не те, про що говорить вам помилка, це зовсім інша помилка.
Шон Ейрі

1
Спробуйте цю статтю, вона проходить майже всі кроки, які вам знадобляться для усунення проблем з підключенням: social.technet.microsoft.com/wiki/contents/articles/…
Шон Ейрі

3
Дивіться мою відповідь тут із моїм екраном, якщо ви отримали цю помилку в SQL Server {version} Express, коли ви вперше налаштовували її. Я повернувся до StackOverflow і знову використав свою відповідь, оскільки це був єдиний, хто працював. stackoverflow.com/questions/1391503/…
MacGyver

Цей випуск у мене був на моєму віртуальному сервері, коли я хотів підключитися до localhost. Виявилося, що при запуску ОС була якась помилка - у моєму випадку все було вирішено на щастя чистим перезавантаженням.
Qohelet

Сьогодні я витратив багато часу на це, нарешті, те, що для мене спрацювало, це: Відкрити менеджер конфігурації сервера Sql -> Протоколи для <INSTANCE> -> TCP / IP -> IP адреси (вкладка) . Перейдіть до останнього запису IP All та згадайте TCP Port 1433 . Тепер перезапустіть SQL Server (ІНСТАНЦІЯ), використовуючи services.msc . Після цього проблема була вирішена.
ani627

Відповіді:


301

Я знайшов такі методи корисними:

  1. Переконайтеся, що двигун вашої бази даних налаштований для прийому віддалених з'єднань :

    • Пуск> Усі програми> SQL Server 2005> Інструменти конфігурації> Конфігурація поверхні SQL Server
    • Клацніть на Конфігурація поверхні для служб та з'єднань
    • Виберіть екземпляр, у якого виникають проблеми> Двигун бази даних> Віддалені підключення
    • Увімкнути локальні та віддалені з'єднання
    • Перезапустити екземпляр
  2. Можливо, вам доведеться створити виняток на брандмауері для екземпляра SQL Server і порту, який ви використовуєте:

    • Пуск> Запуск> Firewall.cpl
    • Перейдіть на вкладку "Винятки"
    • Додайте sqlservr.exe (зазвичай розташований у C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin, перевірте, чи встановлено фактичний шлях до папки) та порт (за замовчуванням 1433)
    • Перевірте також свою з'єднувальну рядок
  3. Перевірте, чи сервіси вашого сервера SQL запускаються та працюють належним чином:

    • Перейдіть у розділ Усі програми> Microsoft SQL Server 2008> Інструменти конфігурації> Менеджер конфігурацій SQL Server> Послуги SQL Server
    • Переконайтесь, що стан служби SQL Server працює.

    Крім того, переконайтеся, що ваш віддалений сервер знаходиться в одній мережі . Запустіть, sqlcmd -Lщоб перевірити, чи ваш сервер включений у ваш список мереж.

  4. Увімкнути TCP / IP у конфігурації SQL Server

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

    • Перейдіть до всіх програм >> Microsoft SQL Server 2008 >> Інструменти конфігурації >> Менеджер конфігурацій SQL Server >> Виберіть TCP / IP
    • Клацніть правою кнопкою миші TCP / IP >> Клацніть на Увімкнути

    Ви повинні перезапустити Служби SQL Server, щоб усі зміни набрали чинності. Клацніть правою кнопкою миші та перейдіть до властивостей меню, щоб вибрати місце, де можна змінити порт за замовчуванням SQL Server.


10
Увімкнення TCP / IP у налаштуваннях SQL Server було рішенням для мене під час використання SQL Server 2014 Express.
Майк Річардс

73
Сьогодні я витратив багато часу на це, нарешті, те, що для мене спрацювало, це: Відкрити менеджер конфігурації сервера Sql -> Протоколи для <INSTANCE> -> TCP / IP -> IP адреси (вкладка) . Перейдіть до останнього запису IP All та згадайте TCP Port 1433 . Тепер перезапустіть SQL Server (<ІНСТАНЦІЯ>) за допомогою services.msc . Після цього проблема була вирішена!
ani627

1
Я також зіткнувся з конкретною проблемою на моєму локальному сервері Sql і вирішив, перевіривши локальні сервіси операційної системи та шукав конкретні послуги Sql та запускав їх по черзі. Це працювало ідеально.
Faisal Naseer

4
У мене теж була така ж проблема, увійшов на сервер sql, виявив, що служба mssqlserer зупинена, запустив її. Вдалося підключитися до екземпляра зараз
Рак

15
Також ЗАБУДУЙТЕ на ENABLE SQL Server Browserобслуговування. У моєму часі було налаштовано декілька серверів SQL ... Але, схоже, у цього кроку завжди є різні сценарії :)
mschr

125

Я отримав рішення для мене:

Відкрийте "Менеджер конфігурацій SQL Server"

Тепер натисніть "Конфігурація мережі SQL Server" і натисніть "Протоколи для імені "

Клацніть правою кнопкою миші на "TCP / IP" (переконайтесь, що вона включена) Клацніть на Властивості

Тепер виберіть вкладку "Адреси IP-адреси" - і перейдіть до останнього запису "IP Усі"

Введіть "TCP Port" 1433.

Тепер перезапустіть "SQL Server. Ім'я." використовуючи "services.msc" (winKey + r)

Це буде працювати ...


Спробуючи це, але чомусь, коли я клацну правою кнопкою миші та виберіть "Властивості" на "TCP / IP" у Windows10, це діалогове вікно не витягне. Інші вузли, як правило, у перегляді дерев, просто вискакують діалоги. Хтось має цю проблему та ідеї для її вирішення?
Райан Беткер - healthNCode

3
У SQL Server 2014 використовуйте (localdb) \ mssqllocaldb замість (localdb) \ v11.0
Шалва Аванашвілі

67
Копія вставила мій коментар (який був опублікований 24 лютого 2015 року - за 7 місяців до вашого повідомлення) як відповідь, не даючи мені кредитів! : P
ani627

2
Це спрацювало. Мені не вдалося підключитися до SQL Server 2016. Внесли ці зміни, і це спрацювало! Дякую.
Анкур

1
це працює для мене. просто потрібно було запустити послуги в "service.msc" після ввімкнення TCP / IP та іменованих труб в диспетчері налаштувань.
Аліф Нушад

100

Додавання мого сильно прихильного коментаря як відповідь із скріншотами.

Я витратив на це багато часу, нарешті те, що для мене спрацювало:

1) Відкрийте диспетчер конфігурації сервера Sql -> Конфігурація мережі SQL Server -> Протоколи для <(МОНТАЖ)> -> TCP / IP (двічі клацніть по ній).

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

2) Виберіть -> IP адреси (вкладка) .

3) Перейдіть до останнього запису IP All та згадайте TCP Port 1433 .

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

4) Натисніть Win+Rі введіть services.msc .

5) Тепер перезапустіть SQL Server <(ІНСТАНЦІЯ)> .

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

Після цього проблема була вирішена!



Працював для мене, SQL Express 2012
lost_in_magento

Працював для мене на сервері sql 2012 після включення TCP, додав номер порту 1433 до TCP ALL і перезапустив службу!
Чираг Хацурія

Додатково мені довелося дозволити TCP 1433 та UDP 1434 у брандмауері
MarkusEgle

83

Я вирішую цю проблему, відкриваючи Сервіси, а потім запускаю службу Sql Server (Sqlexpress) .

зображення зображення


3
Я бачив, де для сервісу Windows SQL Server встановлено тип ручного запуску, тому він не перезапускався при перезавантаженні. Його слід встановити на Автоматичне.
robertburke

2
Це саме те, що я і зробив, "Мій статус" працює і "StartupType" був "Автоматичний", але я все-таки зіткнувся з проблемою, тому я використав сервіси з типу "Вікно запуску", services.mscпотім я клацнув правою кнопкою миші SQL Server (SQL EXPRESS) для контекстного меню і просто зупинити і запустити сервіс знову і добре працює для мене, сподівання допомагає.
shaijut

22

Ця помилка в основному сталася після зупинки служби SQL. Вам потрібно перезапустити службу. Щоб перейти до цього вікна, потрібно шукати Служби як введіть тут опис зображення

Потім знайдіть SQLSERVER (MSSQLSERVER) та перезапустіть службу.

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

Сподіваюся, це спрацює.


18

Натисніть window + R (Run window Open)та запустіть тип вікна та запустіть "services.msc"нові сервіси, знайдіть SQL SERVER з назвою екземпляра, у моєму випадку, SQL SERVER(SQLEXPRESS)тоді запустіть цю послугу та спробуйте знову, вона працює для мене.введіть тут опис зображення


Відповідь була надана раніше. Не отримуйте жодної причини опублікувати його ще раз
Анік Саха,

8
приятель зіткнувся з тією ж проблемою, але я не знаю гарячого вікна відкритих служб, тоді я знайшов спосіб, і я думав поділитися з людьми
Hafiz Asad

Дякую, @HafizAsad Ваша відповідь працює на мене.
Аднан Ахмад

@AdnanAhmad Вас вітають. Дякуємо за вдячність
Хафіз Асад

16

У випадку, якщо ви можете використовувати Express Edition :

Додайте "\SQLEXPRESS" після імені вашого сервера

напр "MY-SERVER\SQLEXPRESS"

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


13

У мене була така ж помилка, коли я хотів запустити свій проект WinForms (який включає роботу з базою даних SQL Server, і він прекрасно працював на моєму ПК) на іншому ПК. Проблема була в брандмауері Windows на моєму ПК. Я вирішив це, додавши два правила. Це вся процедура, як дозволити SQL Server через брандмауер Windows:

  1. Відкрийте «Виконати» та введіть services.msc
  2. Знайдіть службу для SQL Server (ім'я екземпляра) та браузера SQL Server. Клацніть правою кнопкою миші, виберіть "Властивості", скопіюйте шлях до файлу EXE
  3. Потім відкрийте firewall.cpl, натисніть дозволити програму або додайте правило, додайте скопійований раніше шлях (є процедура, яку потрібно дотримуватися), встановіть прапорець Домен і Приватне, зніміть прапорець Загальнодоступне.

Це посилання на YouTube, де ви можете побачити цю процедуру: Дозволити SQL Server через брандмауер Windows


Для мене прекрасно працює. Важливо: Додайте браузер і сервер у брандмауер! +1
BendEg

Мені важко було знайти файл sqlservr.exe, це зробило трюк у його знаходженні.
Стен

11

Якщо жодне з перерахованих вище рішень не працює (для мене нічого не працює), просто РЕСТАРТАЙТЕ свій комп'ютер, і ви зможете підключитися до вашого sql-сервера (localhost).


Причина, по якій це буде працювати, це тому, що ви тільки що встановили сервер Sql і не перезапустили комп'ютер так, як вам сказала установка. Отже, зробіть це, і тоді будуть створені служби та вся необхідна конфігурація, якої немає.
Стерлінг Діаз

10

Після виконання всього згаданого тут:
http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a- з'єднання-sql-сервер-microsoft-sql-сервер-помилка / Ще не працювало для мене.

Кроки працювали для мене:

Start > Run > cmd > sqlcmd -L

Він запропонує вам ім'я сервера. Переконайтесь, що це ім’я сервера збігається з тим, до якого ви намагаєтесь підключитися, у вікні CONNECT TO SERVER студії управління SQL.

Я зробив цю дурну помилку, яку продовжую використовувати MSSQLSERVER , використовуючи це ім’я сервера.

Сподіваюся, це допомагає людям, які роблять нерозумні помилки, як я.

Дякую.


7

Я використовую SQL Server 2016 та Window 10.

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

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

Перевірте номер свого порту TCP, двічі клацніть ім’я протоколу TCP / IP. Зазвичай за замовчуванням це 1433.

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

Наступні процедури налаштовують брандмауер Windows за допомогою брандмауера Windows із вбудованим консолем розширеної безпеки Microsoft (MMC). Брандмауер Windows з розширеною безпекою налаштовує лише поточний профіль.

Щоб відкрити порт у брандмауері Windows для доступу до TCP

  1. У меню "Пуск" натисніть кнопку "Виконати", введіть WF.msc і натисніть кнопку ОК.
  2. У брандмауері Windows з розширеною безпекою на лівій панелі клацніть правою кнопкою миші Вхідні правила та натисніть кнопку Нове правило на панелі дій.
  3. У діалоговому вікні Правила виберіть Порт і натисніть кнопку Далі.
  4. У діалоговому вікні "Протокол і порти" виберіть TCP. Виберіть конкретні локальні порти, а потім введіть номер порту екземпляра двигуна баз даних, наприклад, 1433 для екземпляра за замовчуванням. Клацніть Далі.
  5. У діалоговому вікні Дія виберіть Дозволити з'єднання та натисніть кнопку Далі.
  6. У діалоговому вікні "Профіль" виберіть будь-які профілі, що описують середовище підключення комп'ютера, коли ви хочете підключитися до двигуна баз даних, а потім натисніть кнопку Далі.
  7. У діалоговому вікні Ім'я введіть ім'я та опис цього правила та натисніть кнопку Готово.

Інша річ, щоб налаштувати.

Відкрити доступ до SQL Server при використанні динамічних портів

  1. У меню "Пуск" натисніть кнопку "Виконати", введіть WF.msc і натисніть кнопку ОК.
  2. У брандмауері Windows з розширеною безпекою на лівій панелі клацніть правою кнопкою миші Вхідні правила та натисніть кнопку Нове правило на панелі дій.
  3. У діалоговому вікні Тип правила виберіть Програма та натисніть кнопку Далі.
  4. У діалоговому вікні програми виберіть Цей шлях програми. Клацніть Огляд і перейдіть до екземпляра SQL Server, до якого ви хочете отримати доступ через брандмауер, а потім натисніть кнопку Відкрити. За замовчуванням SQL Server знаходиться на C: \ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Binn \ Sqlservr.exe. Клацніть Далі.
  5. У діалоговому вікні Дія виберіть Дозволити з'єднання та натисніть кнопку Далі.
  6. У діалоговому вікні "Профіль" виберіть будь-які профілі, що описують середовище підключення комп'ютера, коли ви хочете підключитися до двигуна баз даних, а потім натисніть кнопку Далі.
  7. У діалоговому вікні Ім'я введіть ім'я та опис цього правила та натисніть кнопку Готово.

Перегляньте подвійну документацію Microsoft Налаштування брандмауера Windows для доступу до бази даних


На моєму ПК з Windows 10 екземпляр сервера sql знаходиться на C: \ Program Files \ Microsoft SQL Server \ MSSQL13.SQLEXPRESS \ MSSQL \ Binn \ Sqlservr.exe
Mayer Spitzer

7

Можна перевірити наступні методи.

  • а

    1. Перевірте рядок з'єднання проекту.
  • б

    1. Перейдіть до служб та перезапустіть екземпляр SQLServer.
  • c

    1. Відкрийте "Менеджер конфігурації SQLServer"
    2. На лівій панелі виберіть "Конфігурація мережі SQLServer" та розгорніть її
    3. Виберіть "Протоколи для MSSQLServer"
    4. На правій панелі dbl натисніть "TCP / IP"
    5. На вкладці "Протокол" встановіть для "Увімкнено" значення "Так"
    6. На вкладці "IP адреси" прокрутіть вниз
    7. У "IPAll" встановіть "Порт TCP" на 1433
  • г
    1. Відкрийте "Брандмауер із розширеною безпекою"
    2. На правій вкладці виберіть "Вхідні правила"

На середній вкладці знайдіть запис про те, що "локальний порт" - 1433, якщо ви не можете його знайти, спробуйте створити його з наступними рівнями

  • У меню "Пуск" натисніть кнопку "Виконати", введіть "WF.msc", а потім натисніть кнопку ОК
  • На лівій панелі натисніть "Брандмауер Windows з розширеною безпекою"
  • На правій панелі клацніть правою кнопкою миші "Вхідні правила", а потім натисніть "Нове правило"
  • У діалоговому вікні Тип правила виберіть "Порт" та натисніть кнопку Далі
  • У діалоговому вікні "Протокол і порти" виберіть "TCP" і виберіть "Специфічні локальні порти", а потім введіть номер порту 1433, натисніть кнопку Далі
  • У діалоговому вікні Дія виберіть Дозволити з'єднання та натисніть кнопку Далі
  • У діалоговому вікні "Профіль" встановіть прапорець Домен, приватний і загальнодоступний, а потім натисніть кнопку Далі
  • У діалоговому вікні "Ім'я" введіть "Порт SQL 1433" і для опису напишіть опис власного. Потім натисніть кнопку Готово
  1. Потім на середній вкладці двічі клацніть знайдений елемент (екземпляр) або створений вами елемент імені 'Порт SQL 1433'.
  2. У відкритому діалоговому вікні (Властивості SQL Server) виберіть вкладку "Сфера".
  3. У локальному ПК перейдіть на веб-сайт google.com у своєму веб-переглядачі та знайдіть „Мій IP”.
  4. потім копію вашого "IP"
  5. Перейдіть на віддалений сервер і в діалоговому вікні "Властивості SQL Server" на вкладці "Область застосування", у розділі "Віддалена IP-адреса" виберіть параметр "Ці IP адреси" та натисніть кнопку "Додати".
  6. У відкритому діалоговому вікні (IP-адреса) виберіть параметр "Ця IP-адреса або підмережа" та вставте "IP", натисніть кнопку ОК.

7

Це рішення вирішує як проблеми, так network error і serviceпозаду SQL-сервера

Я відповів на подібне запитання тут, вам потрібно прописати інше open Run type-> services.msc- під послугами ->sort by stopped ви побачите купу зупинених служб SQLRight click and start

Для початку - є 4 проблеми, які можуть викликати поширені помилки підключення LocalDb SqlExpress Sql Server SQL Network Interfaces, error: 50 - Local Database Runtime error occurred , перш ніж почати потрібно перейменувати v11 або v12 в (localdb) \ mssqllocaldb


Troubleshooting Steps
  1. У вас немає служб, запущених запускати цей cmd , net start MSSQLSERVERабоnet start MSSQL$ instancename
  2. Ви не маєте портів брандмауера тут налаштовані введіть тут опис зображення
  3. Ваша установка має і видає / пошкоджує (наведені нижче кроки допомагають приємно почати)
  4. Ви не перейменували V11 або 12 на mssqllocaldb / SqlServer

Я виявив, що найпростіше це зробити нижче - я додав фотографії та кроки для допомоги.


Resolution Steps:

Спочатку перевірте, який екземпляр встановлено, ви можете це зробити, перевіривши реєстр та запустивши cmd

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" якщо цей крок не вдається, ви можете видалити за допомогою параметра dcmd> Sqllocaldb.exe d "someDb"
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png


5

У мене виникла та сама проблема, і проблема полягала в тому, що я мав декілька проектів у рішенні ( Webі Droid), і навіть незважаючи на те, що Default projectбуло обрано в Package Manager Consoleньому, він використовував рядок з'єднання з Droidпроекту:

PM> update-database -Verbose
Using StartUp project 'Droid'. <-- DROID
Using NuGet project 'Web'. <-- WEB
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
<!-- BAD TARGET DATABASE -->
Target database is: 'DefaultConnection' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention).
System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   [REMOVED TEXT]
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:-1,State:0,Class:20
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Після встановлення Startup Projectна Webі Default Projectв Package Manger Consoleя отримав його для роботи.


5

Мені потрібно запустити службу браузера SQL Server у менеджер конфігурацій SQL Server . Без цього інсталяція не може виявити нещодавно створений сервіс.


1
Я ще не там, але я ближче. У Visual Studio після цього також відключіть і знову підключіться, отримуючи таку ж помилку, але зараз, принаймні, ззаду VS2015 я не можу створювати таблиці, а в базах даних я створюю шов для запуску зараз. (е, немає жодної піктограми темного хреста над ними)
user3800527

1
Зауважте після вашої команди, це призвело до імені сервера на локальній машині Пуск> Виконати> cmd> sqlcmd -L
user3800527

4

Хоча вищезазначені рішення повинні працювати в 90% випадків, але якщо ви все ще читаєте цю відповідь !!! Ви, ймовірно, намагаєтесь підключитися до іншого сервера, ніж призначено. Це може бути пов’язано з файлом конфігурації, що вказує на інший SQL-сервер, ніж власне сервер, до якого ви намагаєтесь підключитися.

Сталося зі мною щонайменше.


1
Сталося і мені. Потрібно перевірити це, перш ніж перевірити спробу діагностувати брандмауер. У мене був правильний рядок підключення, але я запускав неправильний проект у вирішенні ...
VSO

4

Я перейшов з робочого ноутбука в ОС Windows 7 на робочий ноутбук в ОС Windows 10. Я успішно використовував SSMS2016 у Windows 7.

Це ж питання застосовано за допомогою SSMS2012 або SSMS2016. Мій доступ до 10 sql-серверів за допомогою аутентифікації Windows залишався однаковим. Я міг би перевірити це на іншому сервері. Однак 2 з 10 серверів не підключились до мого ноутбука . Обидва були MS sql сервером 9, але я міг підключитися до інших баз даних 9 sql server.

Рішенням було додати правило брандмауера (використовуючи брандмауер Windows з розширеною безпекою).

Створіть правило входу для кожної SSMS, наприклад C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe

Я не експерт з мережі, тому я не включив деталі, але, сподіваюся, це направить вас у правильному напрямку.


Помилка msg (правило попереднього брандмауера) "Під час встановлення з'єднання з SQL сервером сталася помилка, пов’язана з мережею або для конкретного примірника. Сервер не знайдений або недоступний. дозволити віддалені з’єднання. (постачальник: мережеві інтерфейси SQL, помилка: 26 - пошук помилок із зазначенням сервера / вказаний екземпляр) (.Net SqlClient Provider) "


4

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

Я тут зробив усі анонси, і досі всмоктується. Тому переконайтесь, що ви зробили те саме, що і я, перш ніж переглядати вниз.

Можливо, я не в змозі миттєво виправити ситуацію з уром, але я можу вказати напрямок чи думку, що подумаєш (той, хто остаточно ковзає сюди). Я почав розмірковувати про помилку моєї запущеної програми, що сталася після того, як я переконався, що ім'я екземпляра явно правильне, і встановив мою базу даних, щоб дозволити дистанційне керування слідуючи вищевказаним методам. Після цього я підозрював, що в моєму фрагменті коду з'єднання SQL трапилося щось не так.

Вирішення моєї проблеми:

  • Перевірте функцію sqlconnection

  • Клацніть, щоб побачити його конфігурацію

  • Нове з'єднання

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

  • Виберіть ім'я сервера ур

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

Це працює для мене з роздумом про те, що саме відбудеться в процесі підключення. Сподіваюся, що моє мислення призведе до того, щоб убити помилку ур.


Це допомогло мені виявити, що мені потрібно Зняти номер порту для рядка з'єднання LocalDB під час використання Entity Framework.
ryanwebjackson

4

Я спробував усі інші відповіді на це питання, і деякі, якщо не всі, мабуть, зіграли певну роль у тому, щоб це працювало для мене, але я все одно не міг віддалено підключитися до БД. Я використовував SQL Server у Azure VM.

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

Сподіваюсь, це допоможе тому, хто спробував усі інші відповіді і досі не має щастя!


4

Підсумок

Щоб виправити цю проблему, яка виникає під час запуску локальної програми та віддаленої бази даних , використовуйте диспетчер конфігурацій SQL Server, щоб додати псевдонім для віддаленої бази даних.

Деталі

Я нещодавно зіткнувся з цією проблемою при переході з Windows 7 на ноутбук Windows 10. Я працював над локальною розробкою та середовищем виконання, отримуючи доступ до нашої бази даних Dev на віддаленому сервері. Ми отримуємо доступ до бази даних Dev через налаштування псевдоніму сервера через мережеву утиліту SQL Server Client Network (cliconfg.exe). Після підтвердження того, що псевдонім був правильно встановлений і в 64, і в 32-бітній версії утиліти, і що сервер бази даних був доступний з нового ноутбука через SSMS, я все-таки отримав помилку, яку побачив ОП (не IP-адреса OP, звичайно).

Щоб додати псевдонім для віддаленого сервера баз даних Dev, потрібно було використовувати Менеджер конфігурацій SQL Server. Виправлені речі направо.

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


4

Ви можете перевірити стан служби MS SQL Server 2014. У Windows 7 це можна зробити за допомогою:

  1. Перейдіть до пошуку та введіть "Менеджер конфігурацій SQL Server 2014"
  2. Потім натисніть "Сервіс SQL Server" у лівому меню
  3. Перевірте примірник стану служби SQL Server, якщо він зупинений або працює
  4. Якщо він зупинився, будь ласка, змініть статус на запущений та увійдіть у SQL Server Management Studio 2014

3

Моя проблема почалася, коли я намагався змінити сервер з IIS Express на Local IIS (під час використання LocalDB ).

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

Я використовував LocalDB (для цілей розробника), і коли я перейшов до повернення з Local IIS до IIS Express, Visual Studio переключив джерело даних з Source Source = (LocalDb) \ MSSQLLocalDB на Source Data =. \ SQLEXPRESS

Неправильний рядок з'єднання

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

Правильний рядок з'єднання

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True" providerName="System.Data.SqlClient" />

Сподіваюся, це допомагає комусь там.


Також не робіть нерозумної помилки використання / замість \ у рядку з'єднання.
андрю паштет

3

Поряд із спробою всього, як запропонував Тео Чуен Вей Брайан, переконайтеся, що ви також посилаєтесь на правильне ім’я сервера / екземпляра в рядку з'єднання.

Якщо ви використовуєте коротку форму імені хоста / екземпляра на сервері баз даних або у файлі web.config, переконайтеся, що ви використовуєте повноцінне доменне ім’я (FQDN) / екземпляр

Крім того, щоб перевірити зв’язок із сервером, на якому клієнт SQL-сервера НЕ присутній,

-> створити текстовий файл і змінити його розширення на .udl

-> Клацніть правою кнопкою миші файл і ви побачите вкладку з'єднання.

-> Введіть ім'я сервера та введіть інформацію для перевірки підключення до сервера баз даних.

Сподіваюсь, це допомагає.


3

Якщо ви несподівано зіткнулися з цією помилкою, скажімо, у виробничому середовищі, і нічого не змінилося, спробуйте наступні 4 пункти в порядку нижче, щоб побачити, чи вона виправлена.

  1. перезапустіть сервер сервера sql.
  2. перезапустіть службу (скажімо, IIS), що викликає сервер sql. (проблема, ймовірно, тут, якщо час між початком виклику служби на сервер SQL і часом, коли ви закінчите отримувати помилку відповіді, дуже короткий (приблизно одна-дві секунди).
  3. перезапустіть сервер sql-сервер увімкнено.
  4. перезапустіть сервер, на якому увімкнено службу дзвінків

3

Коли я відчув цю помилку в Visual Studio,

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

... саме під час виконання наступного коду C # намагався отримати мої дані SQL Server для відображення їх у сітці. Перерва сталася саме на лінії, що говорить connect.Open ():

        using (var connect = Connections.mySqlConnection)
        {
            const string query = "SELECT Name, Birthdate, Narrative FROM Friends";
            using (var command = new SqlCommand(query, connect))
            {
                connect.Open();
                using (var dr = command.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        // blah
                    }
                }
            }
        }

Це було незрозумілим, оскільки запит SQL був дуже простим, у мене була правильна лінія підключення, і сервер бази даних був доступний. Я вирішив самостійно запустити фактичний запит SQL в студії управління SQL, і він пройшов чудово і отримав кілька записів. Але в результатах запиту виділялося одне: в полі типу друзів було знайдено некоректно закодований текст HTML у полі типу varchar (max) (конкретно, деякі кодовані символи коментарів, подібні <!--до даних стовпця "Оповідання"). Рядок даних підозрюваного виглядав приблизно так:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    &lt;!--HTML Comment -->Once upon a time...

Помітьте кодований HTML-символ " &lt;", який позначав символ "<". Якимось чином пробився в базу даних, і мій код C # не зміг підібрати! Помилка кожного разу прямо на лінії connect.Open ()! Після того як я вручну відредагував один рядок даних у таблиці бази друзів і замість цього поставив розшифрований символ "<", все працювало! Ось як повинен виглядати цей рядок:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    <!--HTML Comment -->Once upon a time...

Я відредагував один поганий рядок, який у мене був, використовуючи цей простий оператор UPDATE нижче. Але якщо у вас було декілька порушених рядків закодованого HTML, вам може знадобитися більш детальний оператор UPDATE, який використовує функцію ЗАМІНИ:

UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '&lt%'

Отже, мораль історії полягає в тому, щоб (принаймні, в моєму випадку) оздоровити ваш HTML-вміст, перш ніж зберігати його в базі даних, і ви не отримаєте в першу чергу цієї криптованої помилки SQL Server! (Ага, правильна дезіннізація / розшифровка вмісту HTML є предметом ще однієї дискусії, гідної окремого пошуку StackOverflow, якщо вам потрібна додаткова інформація!)



3

Розташування тегів Xml у Web.config є важливим

Спочатку

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

Після

<connectionStrings>
  <add name="SqlConnectionString" connectionString="Data Source=.; Initial Catalog=TestDB; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

3

У моїй ситуації служба MSSQLSERVER виникла проблема, тому я перезапустив службу і вирішив проблему.

Тому я рекомендую перейти до програми Служби за: клавішею Windows, пошукати "Послуги" , а потім знайти свій екземпляр Sql, як правило, "SQL Server (MSSQLSERVER)" на сервері Microsoft sql. Клацніть правою кнопкою миші на сервісі та натисніть кнопку Пуск, якщо відключена, натисніть кнопку Перезапустити.


2

Ця помилка виникає, коли ваш екземпляр сервера sql stopped .

Перейдіть до всіх програм> SQL Server> Інструменти конфігурації> КОНФІГУРАЦІЙНИЙ КОНФІГУРАЦІЙ SQL SERVER

потім натисніть на SQL SERVER SERVICES, з’явиться список екземплярів, виберіть екземпляр, про який йде мова, і натисніть на значок відтворення на верхній панелі інструментів, сподіваюся, що це допоможе.

ця відповідь дуже пізня (але краще пізно, ніж ніколи;)


2

Я вирішив цю проблему, встановивши проект, який використовує Entity Framework як проект запуску, а потім запустив команду "update-database".

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