SQL Network Interfaces, ошибка: 50 - Произошла ошибка локальной базы данных. Невозможно создать автоматический экземпляр
Я пытаюсь создать веб-приложение ASP.NET MVC 5 с файлом MyDatabase.mdf
в папке App_Data
. У меня установлен SQL Server 2014 Express с экземпляром LocalDb
. Я могу редактировать таблицы базы данных с помощью Server Explorer, однако, когда я отлаживаю приложение и перехожу на страницу, где нужна база данных, я получаю следующую ошибку.
При установлении соединения с SQL Server возникла связанная с сетью или конкретная ошибка экземпляра. Сервер не найден или не был доступен. Проверьте правильность имени экземпляра и настройте SQL Server для удаленного подключения. (провайдер: Сетевые интерфейсы SQL, ошибка: 50 - Произошла ошибка локальной базы данных. Невозможно создать автоматический экземпляр. См. журнал событий приложения Windows для получения подробных сведений об ошибке.
Итак, я посмотрел в средстве просмотра событий в разделе 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 отключается после запуска приложения. Если я обновляю базу данных с помощью Server Explorer в Visual Studio, я могу просмотреть таблицы.
Как я могу подключиться к базе данных и отредактировать ее в Visual Studio 2013, но когда я отлаживаю приложение, он не может подключиться к базе данных?
Ответы
Ответ 1
Ломающиеся изменения в 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
и посмотрите, исправляет ли это вашу проблему.
Ответ 2
Запуск:
sqllocaldb создать "v12.0"
Из командной строки cmd это разрешило мне...
Ответ 3
Я обычно исправляю этот вопрос после этого сообщения в блоге msdn Использование LocalDB с полным IIS
Для этого требуется отредактировать файл applicationHost.config, который обычно находится в папке C:\Windows\System32\inetsrv\config. Следуя инструкциям из KB 2547655, мы должны включить оба флажка для Application Pool 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
Для начала - есть 4 проблемы, которые могут вызывать распространенные ошибки подключения к LocalDb SqlExpress Sql Server SQL Network Interfaces, error: 50 - Local Database Runtime error occurred
, перед тем как начать, вам нужно переименовать v11 или v12 в (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"
![SqlLOCALDb_edited.png]()
Изменить 1: Путь к реестру для всех версий Универсальный формат для отслеживания реестра
// 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
Ответ 5
Экземпляр может быть поврежден или не обновлен должным образом
Попробуйте эти команды =>
C:\>sqllocaldb stop MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" stopped.
C:\>sqllocaldb delete MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" deleted.
C:\>sqllocaldb create MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" created with version 13.0.1601.5.
C:\>sqllocaldb start MSSQLLocalDB<br>
LocalDB instance "MSSQLLocalDB" started.
Ответ 6
возможно, эта ошибка возникла, потому что этот version
сервера Sql is not installed
connectionString="Data Source=(LocalDB)\v12.0;....
и вам не нужно его устанавливать
Самое быстрое исправление - изменить его на любую установленную версию
в моем случае я меняю его с v12.0
на MSSQLLocalDB
Ответ 7
Окончательное решение для этой проблемы ниже:
-
Сначала вносите изменения в файл конфигурации приложенияHost. заменить ниже string setProfileEnvironment = "false" TO setProfileEnvironment = "true"
-
В строке подключения к базе данных добавьте атрибут ниже: Integrated Security = SSPI
Ответ 8
Я столкнулся с той же проблемой. Мое исправление менялось <parameter value="v12.0" />
в <parameter value="mssqllocaldb" />
в файл "app.config".
Ответ 9
ПОЖАЛУЙСТА, обратите внимание на то, что сказал Тайлер
Обратите внимание, что если вы хотите отредактировать этот файл, убедитесь, что вы используете 64-битный текстовый редактор, например блокнот. Если вы используете 32-битную версию Notepad ++, она автоматически отредактирует другую копию файла в SysWOW64. Часов моей жизни я не вернусь
Ответ 10
В моем случае у нас было несколько проектов в одном решении, и мы выбрали другой стартовый проект, чем в консоли диспетчера пакетов, когда выполняли команду "Update-Database" с кодами в начале миграции. Убедитесь, что выбрали правильный стартовый проект.
Ответ 11
Я решаю вышеуказанную проблему, применяя следующие шаги
![enter image description here]()
И после того, как вы внесли эти изменения, выполните следующие изменения в вашем файле 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" />