Почему я получаю сообщение «Не удается подключиться к серверу - ошибка, связанная с сетью или экземпляром»?


379

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

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

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

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

(поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server) (Microsoft SQL Server, ошибка: 1326)

Эта ошибка выдается, когда я пытаюсь настроить свою базу данных для gridview в Visual Studio 2010. Я в растерянности относительно того, как отладить эту ошибку.

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


11
Пинг ненадежен для проверки подключения к SQL Server, эхо-запрос ICMP по умолчанию отключен в Windows Server. Неверное имя пользователя или пароль - это не то, что говорит вам ошибка, это совершенно другая ошибка.
Шон Эйри,

1
Попробуйте эту статью, в ней описаны
Шон Эйри,

3
Смотрите мой ответ здесь с моим снимком экрана, если вы получили эту ошибку с SQL Server {версия} Express, при первоначальной настройке. Я вернулся в StackOverflow и снова использовал свой ответ, потому что он работал только один. stackoverflow.com/questions/1391503/…
MacGyver

У меня была эта проблема на моем виртуальном сервере, когда я хотел подключиться к localhost. Оказалось, что при запуске ОС произошла какая-то ошибка - в моем случае, к счастью, все было решено чистой перезагрузкой.
Кохелет

Сегодня я потратил много времени на это, и наконец-то у меня сработало следующее: Откройте Sql Server Configuration Manager -> Протоколы для <INSTANCE> -> TCP / IP -> IP-адреса (вкладка) . Перейти к последней записи IP All и упомянуть TCP-порт 1433 . Теперь перезапустите SQL Server (INSTANCE), используя services.msc . После этого проблема была решена.
ani627

Ответы:


301

Я нашел следующие методы полезными:

  1. Убедитесь, что ядро ​​базы данных настроено на прием удаленных соединений :

    • Пуск> Все программы> SQL Server 2005> Инструменты настройки> Конфигурация поверхности SQL Server
    • Нажмите на Конфигурация поверхности для сервисов и соединений
    • Выберите экземпляр, в котором возникла проблема> Компонент Database Engine> Удаленные подключения
    • Включить локальные и удаленные подключения
    • Перезапустить экземпляр
  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 Server Configuration Manager -> Протоколы для <INSTANCE> -> TCP / IP -> IP-адреса (вкладка) . Перейти к последней записи IP All и упомянуть TCP-порт 1433 . Теперь перезапустите SQL Server (<INSTANCE>) с помощью services.msc . После этого проблема была решена!
ani627

1
Я также столкнулся с конкретной проблемой на своем локальном сервере Sql и решил ее путем проверки локальных служб операционной системы и поиска определенных служб Sql и запуска их по одному. Это сработало идеально.
Фейсал Насир

4
У меня тоже была такая же проблема, залогинился на sql server и обнаружил, что служба mssqlserer остановлена, запустил ее. Теперь удалось подключиться к экземпляру
Rak

15
Также ПОМНИТЕ об ENABLE SQL Server Browserобслуживании. В свое время я настроил несколько SQL-серверов ... Тем не менее, этот шаг, кажется, всегда включает в себя разные сценарии :)
mschr

125

Я получил решение для меня:

Откройте «Диспетчер конфигурации SQL Server»

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

Щелкните правой кнопкой мыши на «TCP / IP» (убедитесь, что он включен) Нажмите «Свойства»

Теперь выберите вкладку «IP-адреса» и перейдите к последней записи «IP All»

Введите «TCP-порт» 1433.

Теперь перезапустите «SQL Server .Name». используя "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 Server Configuration Manager -> Сетевая конфигурация SQL Server -> Протоколы для <(INSTANCE)> -> TCP / IP (дважды щелкните по нему).

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

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

3) Перейти к последней записи IP All и упомянуть TCP-порт 1433 .

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

4) Нажмите Win+Rи введите services.msc .

5) Теперь перезапустите SQL Server <(INSTANCE)> .

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

После этого проблема была решена!



Работал для меня, SQL Express 2012
lost_in_magento

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

Для меня дополнительно я должен был разрешить TCP 1433 и UDP 1434 в брандмауэре
MarkusEgle

83

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

сервис Image


3
Я видел, где для службы Windows Server Windows был установлен тип запуска вручную, поэтому он не перезагружался при перезагрузке. Это должно быть установлено на Автоматический.
Робертбург

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
приятель сталкивается с той же проблемой, но я не знаю, что такое горячее открытое окно служб, тогда я нашел способ и поделился с людьми
Хафиз Асад

Спасибо, @HafizAsad. Ваш ответ работает на меня.
Аднан Ахмад

@AdnanAhmad, пожалуйста. Спасибо за благодарность.
Хафиз Асад

16

В случае, если вы можете использовать Express Edition :

Добавить "\SQLEXPRESS" после имени вашего сервера

например "MY-SERVER\SQLEXPRESS"

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


13

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

  1. Откройте «Run» и введите services.msc
  2. Найдите службу для SQL Server (имя экземпляра) и браузера SQL Server. По одному, щелкните правой кнопкой мыши, выберите «Свойства», скопируйте путь к файлу EXE
  3. Затем откройте firewall.cpl, нажмите «Разрешить приложение» или «Добавить правило», добавьте ранее скопированный путь (есть процедура, которой вы должны следовать), отметьте «Домен и частный», снимите флажок «Общий».

Это ссылка на YouTube, где вы можете увидеть эту процедуру: Разрешить SQL Server через брандмауэр Windows


Отлично работает для меня Важно: Добавьте браузер и сервер в брандмауэр! +1
BendEg

Мне было трудно найти файл sqlservr.exe, это помогло найти его.
Стэн

11

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


Причина, по которой это будет работать, в том, что вы только что установили Sql Server и не перезагружали компьютер в соответствии с указаниями по установке. Итак, сделайте это, и тогда будут созданы сервисы и вся необходимая конфигурация отсутствует.
Стерлинг Диас,

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-server-error / у меня все равно не сработало.

Шаги сработали для меня:

Start > Run > cmd > sqlcmd -L

Он подскажет вам имя сервера. Убедитесь, что это имя сервера совпадает с именем, к которому вы пытаетесь подключиться, в окне ПОДКЛЮЧИТЬ К СЕРВЕРУ студии управления SQL.

Я сделал эту глупую ошибку, которую я продолжаю использовать, MSSQLSERVERскорее используя это имя сервера.

Надеюсь, это поможет людям, которые делают глупые ошибки, как я.

Спасибо.


7

Я использую SQL Server 2016 и окно 10.

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

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

Проверьте номер порта TCP, дважды щелкнув имя протокола TCP / IP. Обычно это 1433 по умолчанию.

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

Следующие процедуры настраивают брандмауэр Windows с помощью оснастки «Брандмауэр Windows в режиме повышенной безопасности» (MMC). Брандмауэр Windows в режиме повышенной безопасности настраивает только текущий профиль.

Чтобы открыть порт в брандмауэре Windows для доступа TCP

  1. В меню «Пуск» выберите пункт «Выполнить», введите WF.msc и нажмите кнопку «ОК».
  2. В брандмауэре Windows в режиме повышенной безопасности на левой панели щелкните правой кнопкой мыши Входящие правила, а затем нажмите Новое правило на панели действий.
  3. В диалоговом окне «Тип правила» выберите «Порт» и нажмите «Далее».
  4. В диалоговом окне «Протокол и порты» выберите TCP. Выберите Определенные локальные порты, а затем введите номер порта экземпляра компонента Database Engine, например 1433, для экземпляра по умолчанию. Нажмите кнопку "Далее.
  5. В диалоговом окне «Действие» выберите «Разрешить подключение» и нажмите «Далее».
  6. В диалоговом окне «Профили» выберите все профили, которые описывают среду подключения к компьютеру, когда вы хотите подключиться к компоненту Database Engine, и нажмите «Далее».
  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. В диалоговом окне «Профили» выберите все профили, которые описывают среду подключения к компьютеру, когда вы хотите подключиться к компоненту Database Engine, и нажмите «Далее».
  7. В диалоговом окне «Имя» введите имя и описание для этого правила, а затем нажмите «Готово».

Взгляните на документацию Microsoft. Настройка брандмауэра Windows для доступа к базе данных.


На моем ПК с Windows 10 экземпляр сервера sql находится по адресу C: \ Program Files \ Microsoft SQL Server \ MSSQL13.SQLEXPRESS \ MSSQL \ Binn \ Sqlservr.exe
Майер Спитцер,

7

Вы можете проверить следующие методы.

  • a

    1. Проверьте строку подключения проекта.
  • б

    1. Перейдите в службы и перезапустите экземпляр SQLServer.
  • с

    1. Откройте «Диспетчер конфигурации SQLServer».
    2. В левой панели выберите «Конфигурация сети SQLServer» и разверните ее.
    3. Выберите «Протоколы для MSSQLServer»
    4. В правой панели dbl нажмите «TCP / IP»
    5. На вкладке «Протокол» установите «Включено» на «Да»
    6. На вкладке «IP-адреса» прокрутите вниз
    7. В «IPAll» установите «TCP-порт» на 1433
  • d
    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 Server 9, но я мог подключиться к другим базам данных SQL Server 9.

Решением было добавить правило брандмауэра (используя брандмауэр Windows в режиме повышенной безопасности).

Создайте правило входящих для каждой SSMS, например C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe

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


Ошибка msg (правило брандмауэра) «Ошибка при установлении соединения с SQL Server, связанная с сетью или конкретным экземпляром. Сервер не был найден или недоступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешить удаленные подключения (поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр) (поставщик данных .Net SqlClient) "


4

Почему эта ошибка такая утомительная и шумная, просто потому, что она может возникнуть в разных ситуациях.

Я сделал все подходы выше, и все еще сосал. Поэтому убедитесь, что вы сделали то же самое, что и я, прежде чем просматривать вниз.

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

Решение моей проблемы:

  • Проверьте мою функцию sqlconnection

  • Нажмите, чтобы увидеть его конфигурацию

  • Новая связь

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

  • Выберите имя сервера

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

Это работает для меня с размышлениями о том, что именно происходит в процессе соединения. Надеюсь, мое мышление приведет вас к ошибке.


Это помогло мне найти, что мне нужно УДАЛИТЬ номер порта для строки подключения LocalDB при использовании Entity Framework.
ryanwebjackson

4

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

В конце концов я вспомнил, что у виртуальной машины есть конечные точки, которые контролируются прокси-сервером учетной записи Azure, поэтому я перешел на портал Azure и добавил 1433 в качестве доступной конечной точки, и я мог подключиться к своему экземпляру SQL.

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


4

Резюме

Чтобы устранить эту проблему при запуске локального приложения против удаленной базы данных , используйте диспетчер конфигурации SQL Server, чтобы добавить псевдоним для удаленной базы данных.

подробности

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

Необходимо было использовать диспетчер конфигурации SQL Server, чтобы добавить псевдоним для удаленного сервера базы данных Dev. Исправлены вещи прямо вверх.

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


4

Вы можете проверить состояние службы MS SQL Server 2014. В Windows 7 это можно сделать следующим образом:

  1. Перейдите к поиску и введите «SQL Server 2014 Configuration Manager».
  2. Затем нажмите «Служба SQL Server» в левом меню.
  3. Проверьте экземпляр состояния службы SQL Server, если он остановлен или работает
  4. Если он остановился, измените статус на «Выполнение» и войдите в SQL Server Management Studio 2014

3

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

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

Я использовал LocalDB (для целей разработки), и когда я перешел из Local IIS в IIS Express, Visual Studio переключил мой источник данных с Data Source = (LocalDb) \ MSSQLLocalDB на Data Source =. \ 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

Наряду с попытками выполнить все действия, предложенные Teo Chuen Wei Bryan, убедитесь, что вы также ссылаетесь на правильное имя сервера / экземпляра в строке подключения.

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

Кроме того, чтобы проверить подключение с сервера, на котором нет клиента SQL Server,

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

-> Щелкните правой кнопкой мыши файл, и вы увидите вкладку подключения.

-> Введите имя сервера и войдите в систему, чтобы проверить соединение с сервером базы данных.

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


3

Если вы вдруг столкнулись с этой ошибкой, скажем, в производственной среде, и ничего не изменилось, попробуйте следующие 4 элемента в следующем порядке, чтобы увидеть, исправлена ​​ли она.

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

3

Когда я столкнулся с этой ошибкой в ​​Visual Studio,

«При установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 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 Management Studio, и он работал нормально и дал несколько записей. Но одна вещь выделялась в результатах запроса: в таблице типа Friends в поле «Друзья» (в частности, некоторые закодированные символы комментариев такого рода <!--помещались в данные столбца «Narrative») был какой-то неправильно закодированный HTML-текст . Подозреваемая строка данных выглядела так:

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

Обратите внимание на закодированный символ HTML " &lt;", который обозначал символ "<". Каким-то образом это проникло в базу данных, и мой код C # не смог его поднять! Это не удавалось каждый раз прямо на линии connect.Open ()! После того, как я вручную отредактировал эту строку данных в таблице базы данных Friends и вставил вместо нее декодированный символ «<», все заработало! Вот как должна выглядеть эта строка:

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

Я отредактировал одну плохую строку, которую использовал, с помощью этого простого оператора UPDATE ниже. Но если у вас есть несколько строк закодированного HTML, вам может потребоваться более сложный оператор UPDATE, который использует функцию REPLACE:

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 Server. Щелкните правой кнопкой мыши по сервису и нажмите «Пуск», если отключено, нажмите «Перезагрузить».


2

Эта ошибка возникает, когда ваш экземпляр SQL Server stopped.

Перейти ко всем программам> SQL Server> Инструменты настройки> МЕНЕДЖЕР КОНФИГУРАЦИИ СЕРВЕРА SQL

затем нажмите УСЛУГИ SQL Server, появится список экземпляров, выберите рассматриваемый экземпляр и нажмите значок воспроизведения на верхней панели инструментов, надеюсь, это поможет.

этот ответ очень поздно (но лучше поздно, чем никогда;)


2

Я решил эту проблему, установив проект, который использует Entity Framework в качестве начального проекта, а затем запустил команду «update-database».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.