Сетевые интерфейсы 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

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

Сначала проверьте, какой экземпляр вы установили, вы можете сделать это, проверив реестр и запустив 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

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

Окончательное решение этой проблемы ниже:

  1. Сначала внесите изменения в конфигурационный файл applicationHost. заменить ниже строку setProfileEnvironment="false" TO setProfileEnvironment="true"

  2. В строке подключения к вашей базе данных добавьте ниже атрибут: 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, который решил проблему.

Другие вопросы по тегам