Сетевые интерфейсы SQL, ошибка: 50 - Произошла ошибка локальной базы данных. Невозможно создать автоматический экземпляр
Я пытаюсь создать веб-приложение ASP.NET MVC 5, которое имеет MyDatabase.mdf
файл в App_Data
папка. У меня SQL Server 2014 Express установлен с LocalDb
пример. Я могу редактировать таблицы базы данных с помощью обозревателя сервера, однако при отладке приложения и переходе на страницу, где требуется база данных, я получаю следующую ошибку.
При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 50 - Произошла ошибка локальной базы данных во время выполнения. Не удалось создать автоматический экземпляр. Подробную информацию об ошибке см. в журнале событий приложений Windows.
Итак, я посмотрел в Event Viewer под Application
и видеть только одно предупреждение снова и снова.
Каталог, указанный для кэширования сжатого содержимого C:\Users\User1\AppData\Local\Temp\iisexpress\IIS Временные сжатые файлы \Clr4IntegratedAppPool недопустим. Статическое сжатие отключено.
Поэтому я попытался перезагрузить сервер, но все равно не пошел. Та же ошибка 50, что и раньше.
Я создал класс под Models
где у меня есть класс под названием Post
,
namespace MyApplication.Models
{
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
public class MyDatabase : DbContext
{
public DbSet<Post> Posts { get; set; }
}
}
у меня тоже есть Controller
настроить список сообщений от MyDatabase
,
namespace MyApplication.Controllers
{
public class PostsController : Controller
{
private MyDatabase db = new MyDatabase();
// GET: Posts
public ActionResult Index()
{
return View(db.Posts.ToList());
}
}
В моем web.config
Файл строки подключения выглядит следующим образом...
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Я попробовал предложение, размещенное здесь, но оно не сработало. Также попробовал это.
Я также заметил, что экземпляр MyDatabase отключается после запуска приложения. Если я обновлю базу данных с помощью обозревателя серверов в Visual Studio, я смогу просмотреть таблицы.
Как получается, что я могу подключиться к базе данных и редактировать ее в Visual Studio 2013, но когда я отлаживаю приложение, оно не может подключиться к базе данных?
11 ответов
Срочные изменения в LocalDB: применяется к SQL 2014; взгляните на эту статью и попробуйте использовать (localdb)\mssqllocaldb
в качестве имени сервера для подключения к автоматическому экземпляру LocalDB, например:
<connectionStrings>
<add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb;
...
В статье также упоминается использование SSMS 2012 для подключения к LocalDB 2014. Это заставляет меня поверить в то, что у вас может быть установлено несколько версий SQL - что заставляет меня указать на этот SO-ответ, в котором предлагается изменить имя по умолчанию вашего экземпляра LocalDB, чтобы избежать других проблем несоответствия версий, которые могут возникнуть в будущем; упоминается не как источник проблемы, а для повышения осведомленности о потенциальных конфликтах, которые могут привести к тому, что множественная версия SQL, установленная на одной машине разработчика,... и что-то, к чему можно привыкнуть, чтобы избежать некоторых.
Еще одна вещь, о которой стоит упомянуть - если ваш экземпляр оказался в непригодном для использования состоянии из-за того, что он пытался решить эту проблему, возможно, стоит начать сначала - удалить, переустановить - затем попробовать использовать mssqllocaldb
значение вместо v12.0
и посмотрите, исправит ли это вашу проблему.
Запуск этого:
sqllocaldb создать "v12.0"
Из cmd подскажите решил для меня это...
Я обычно исправляю эту ошибку после публикации в блоге msdn Использование LocalDB с полным IIS
Для этого нужно отредактировать файл applicationHost.config, который обычно находится в C:\Windows\System32\inetsrv\config. Следуя инструкциям из KB 2547655, мы должны включить оба флага для пула приложений ASP.NET v4.0, например:
<add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated">
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</add>
Для начала - есть 4 проблемы, которые могут быть причиной распространенных ошибок подключения к LocalDb SqlExpress Sql Server SQL Network Interfaces, error: 50 - Local Database Runtime error occurred
перед тем как начать, вам нужно переименовать v11 или v12 в (localdb) \ mssqllocaldb
- You don't have the services running
- У вас не настроены порты брандмауэра
- Your install has and issue/corrupt (the steps below help give you a nice clean start)
- You did not rename the V11 or 12 to mssqllocaldb rename the conn string from
v12.0
вMSSQLLocalDB
-like so-><connectionStrings> <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; ...
Я обнаружил, что проще всего сделать следующее - я приложил фотографии и шаги для помощи.
Сначала проверьте, какой экземпляр вы установили, вы можете сделать это, проверив реестр и запустив cmd
cmd> Sqllocaldb.exe i
cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"
если этот шаг не удался, вы можете удалить с помощью опцииd
cmd> Sqllocaldb.exe d "someDb"cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"
Edit 1: Registry path for all versions Generic Format to track down the registry
// SQL SERVER RECENT VERSIONS
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\(instance-name)
// OLD SQL SERVER
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
// SQL SERVER 6.0 and above.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive
// SQL SERVER 7.0 and above
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server 7
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServ65
Экземпляр может быть поврежден или не обновлен должным образом
Попробуйте эти команды =>
C:> sqllocaldb stop MSSQLLocalDB
Экземпляр LocalDB "MSSQLLocalDB" остановлен.
C:> sqllocaldb удалить MSSQLLocalDB
Экземпляр LocalDB "MSSQLLocalDB" удален.
C:> sqllocaldb создать MSSQLLocalDB
Экземпляр LocalDB "MSSQLLocalDB" создан с версией 13.0.1601.5.
C:> sqllocaldb start MSSQLLocalDB
Запуск экземпляра LocalDB "MSSQLLocalDB".
Может быть, эта ошибка пришла, потому что это version
SQL Server is not installed
connectionString="Data Source=(LocalDB)\v12.0;....
и вам не нужно его устанавливать
самое быстрое решение - заменить его на любую установленную версию
в моем случае я изменяю это с v12.0
в MSSQLLocalDB
Окончательное решение этой проблемы ниже:
Сначала внесите изменения в конфигурационный файл applicationHost. заменить ниже строку setProfileEnvironment="false" TO setProfileEnvironment="true"
В строке подключения к вашей базе данных добавьте ниже атрибут: Integrated Security = SSPI
Я столкнулся с той же проблемой. Мое исправление менялось <parameter value="v12.0" />
в <parameter value="mssqllocaldb" />
в файл "app.config".
Все ПОЖАЛУЙСТА, обратите внимание, что сказал Тайлер
Обратите внимание, что если вы хотите редактировать этот файл, убедитесь, что вы используете 64-битный текстовый редактор, такой как блокнот. Если вы используете 32-битную версию, такую как Notepad++, она автоматически отредактирует другую копию файла в SysWOW64. Часы моей жизни я не вернусь
Я решаю вышеуказанную проблему, применяя следующие шаги
И после того, как вы внесли эти изменения, выполните следующие изменения в вашем файле web.config.
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v12.0;AttachDbFilename=|DataDirectory|\aspnet-Real-Time-Commenting-20170927122714.mdf;Initial Catalog=aspnet-Real-Time-Commenting-20170927122714;Integrated Security=true" providerName="System.Data.SqlClient" />
В моем случае у нас было несколько проектов в одном решении, и мы выбрали другой стартовый проект, чем в консоли диспетчера пакетов, когда выполняли команду "Update-Database" с кодами в начале миграции. Убедитесь, что выбрали правильный стартовый проект.
Моя проблема заключалась в том, что у меня было установлено несколько версий MS SQL Express. Я зашел в установочную папку C:/ProgramFiles/MicrosoftSQL Server/, где нашел 3 его версии. Я удалил 2 папки и оставил только MSSQL13.SQLEXPRESS, который решил проблему.