it-roy-ru.com

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

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

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

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

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

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

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

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

319
Sasa Shree

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

  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 Server :

    • Выберите Все программы> 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 по умолчанию.

272
Teo Chuen Wei Bryan

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

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

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

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

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

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

Сейчас Перезагрузка "SQL Server .Name." используя "services.msc" (winKey + r)

Это будет работать...

106
Irshad Khan

Добавление моего сильно одобренного комментария в качестве ответа со скриншотами.

Я потратил много времени на это, наконец то, что сработало для меня:

1) Откройте Sql Server Configuration Manager -> Сетевая конфигурация SQL Server -> Протоколы для <(INSTANCE)> -> TCP/IP (дважды щелкните по нему).

enter image description here

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

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

enter image description here

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

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

enter image description here

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

80
user1336087

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

service Image

77
Anik Saha

Эта ошибка в основном возникала, когда служба SQL остановлена. Вам нужно перезапустить службу. Чтобы перейти в это окно, вы должны выполнить поиск служб, например: enter image description here

Затем найдите SQLSERVER (MSSQLSERVER) и перезапустите службу.

enter image description here

Надеюсь, это сработает.

17
Debendra Dash

Нажмите window + R (Run window Open) и в окне запуска введите "services.msc" и откройте новые службы, найдите запуск SQL SERVER(SQLEXPRESS) и повторите попытку. Это работает и для меня. Надеюсь, это также работает для вас . (enter image description here

13
Hafiz Asad

на случай, если вы используете Express Edition:

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

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

enter image description here

13
Abdulrahman Bres

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

10
eugen sunic

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

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

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

10
NutCracker

Сделав все, что упомянуто здесь
http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open -a-connection-to-sql-server-Microsoft-sql-server-error / У меня все равно не получилось.

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

Start > Run > cmd > sqlcmd -L

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

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

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

Благодарю.

8
Denn

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

enter image description here

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

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

enter image description here

Следующие процедуры настраивают брандмауэр 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 для доступа к базе данных

5
Fred

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

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

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

    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-адрес", нажмите кнопку "ОК".
4
MohammadSoori

У меня возникла та же проблема, и проблема заключалась в том, что я использовал несколько проектов в решении (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 я заставил его работать.

4
Jefecito

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

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

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

3
John

Вы можете проверить состояние службы 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
Chamara

Я должен запустить службу Браузер SQL Server в Диспетчер конфигурации SQL Server. Установка не может обнаружить недавно созданный сервис без этого.

3
MarkosyanArtur

Резюме

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

Подробности

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

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

enter image description here

3
Bill Needels

Это решение также решает как сетевую ошибку, так и службу за сервером SQL

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

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

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

Сначала проверьте, какой экземпляр вы установили, вы можете сделать это , проверив реестр и запустив cmd

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" если этот шаг не удался, вы можете удалить с параметром d cmd> Sqllocaldb.exe d "someDb"
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png

3
transformer

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

Случилось со мной по крайней мере.

3
Arjmand

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

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

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

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

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

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

  • Новая связь

enter image description here

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

enter image description here

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

3
Chase07

Я перешел с рабочего ноутбука на 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) "

2
johnc

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

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

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

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

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

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

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

2
SanthoshM

Попробуйте добавить , и номер порта (как в ,1433) в конец строки подключения.

2
Kalyan Hurkat

Когда я столкнулся с этой ошибкой в ​​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 в поле "Друзья" был неправильно закодированный HTML-текст (в частности, некоторые закодированные символы комментариев типа <!--, размещенные в данных столбца "Narrative"). Подозреваемая строка данных выглядела так:

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, если вам нужна дополнительная информация!)

2
ShieldOfSalvation

важно расположение 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>
2
user7339584

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

enter image description here

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

Надеюсь, это поможет кому-то там.

2
megamaiku

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

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

Моя проблема заключалась в том, что вам нужно иметь строку подключения в обоих вашем слое хранилища и веб-слое. После того, как я добавил его в свой web.config а также мой app.config, Entity Framework смог создать миграцию.

Мой вопрос: зачем он нужен web.config, когда нет абсолютно никакого доступа к базе данных?.

1
Thing

Похоже, ваш экземпляр localdb не запущен. Чтобы запустить его при запуске компьютера, добавьте в папку "Пуск"\Папка автозагрузки BAT-файл следующей строкой

sqllocaldb start name_of_instance

где name_of_instance - это имя экземпляра localdb, который вы хотите запустить. Вы можете перечислить доступные экземпляры в командной строке, используя sqllocaldb i.

например Если вы используете SQL Server Management Studio и подключаетесь к имени сервера (localdb)\v11.0, то ваш BAT-файл будет выглядеть следующим образом

sqllocaldb start v11.0
1
Ondrej

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

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

затем нажмите на СЕРВЕРЫ SQL, появится список экземпляров, выберите рассматриваемый экземпляр и нажмите значок воспроизведения на верхней панели инструментов, надеюсь, это поможет.

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

1
Alex

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

1
user1796440

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

1
Kevin D.

Это также может быть так же просто, как то, что ваша база данных на самом деле не является MS SQL Server. Если ваша база данных на самом деле MySql, например, и вы пытаетесь подключиться к ней с помощью System.Data.SqlClient, вы получите эту ошибку.

Безусловно, большинство примеров ADO.Net будут для MSSQL, и неопытный пользователь может не знать, что вы не можете использовать SqlConnection, SqlCommand и т.д. С MySql.

Хотя все поставщики данных ADO.Net соответствуют одному и тому же интерфейсу, вы должны использовать поставщика, созданного для вашей базы данных.

0
Crowcoder