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

  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

Изменить 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" />