Мережеві інтерфейси SQL, помилка: 50 - Сталася помилка виконання локальної бази даних. Не вдається створити автоматичний екземпляр


80

Я намагаюся створити веб-програму ASP.NET MVC 5, яка має MyDatabase.mdfфайл у App_Dataпапці. У мене встановлено LocalDbекземпляр SQL Server 2014 Express . Я можу редагувати таблиці бази даних за допомогою Провідника сервера, однак, коли я налагоджую програму та переходжу на сторінку, де потрібна база даних, я отримую таку помилку.

Під час встановлення підключення до SQL Server сталася помилка, пов’язана з мережею або конкретним екземпляром. Сервер не знайдено або недоступний. Переконайтеся, що ім’я екземпляра правильне, і що SQL Server налаштовано на можливість віддаленого підключення. (постачальник: Мережеві інтерфейси SQL, помилка: 50 - Сталася помилка виконання локальної бази даних. Не вдається створити автоматичний екземпляр. Детальні відомості про помилки див. у журналі подій програми Windows.

Тож я заглянув до засобу перегляду подій під Applicationі знову і знову бачу лише одне Попередження.

Каталог, вказаний для кешування стисненого вмісту C: \ Users \ User1 \ AppData \ Local \ Temp \ iisexpress \ IIS Temporary Compressed Files \ 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, але коли я налагоджую програму, вона не може підключитися до бази даних?


Ви пробували (localdb)\v11.0?
Arindam Nayak

Щойно спробували з таким (localdb)\v11.0же результатом, як і вище.
Джонатан Кіттелл

Ви впевнені, що SQL Server (SQLEXPRESS)служба працює.
Arindam Nayak,

Так, екземпляр SQLEXPRESS працює, коли я перевіряю за допомогою диспетчера конфігурацій SQL Server
Джонатан Кіттелл

Чи можете ви підключитися за допомогою студії управління, є стаття - dyball.wordpress.com/2014/04/28/… , це може допомогти ~
Arindam Nayak,

Відповіді:


124

Порушення змін до LocalDB: застосовується до SQL 2014 ; перегляньте цю статтю та спробуйте використати (localdb)\mssqllocaldbяк ім'я сервера для підключення до автоматичного екземпляра LocalDB, наприклад:

<connectionStrings>
  <add name="ProductsContext" connectionString="Data Source=(localdb)\mssqllocaldb; 
  ...

У статті також згадується про використання 2012 SSMS для підключення до LocalDB 2014. Що змушує мене думати, що у вас може бути встановлено кілька версій SQL - що змушує мене вказати на цю відповідь SO яка пропонує змінити назву за замовчуванням для вашого "екземпляра" LocalDB, щоб уникнути інших невідповідностей версій, які можуть виникнути в майбутньому; згадується не як джерело проблеми, а для підвищення обізнаності про можливі зіткнення, які може призвести до декількох версій SQL, встановлених на одній машині розробника ... і чогось, що можна звикнути, щоб уникнути деяких.

Інша річ, про яку варто згадати - якщо ви привели екземпляр у непридатний стан через базікання з ним, щоб спробувати вирішити цю проблему, тоді, можливо, варто почати спочатку - видалити, перевстановити - тоді спробуйте використати mssqllocaldbзначення замість v12.0і перевірте, чи що виправляє вашу проблему.


будь-яке інше рішення, будь ласка, тому що воно не працює для мене
Ахмад,

40

Запуск цього:

sqllocaldb створити "v12.0"

З командного рядка cmd це вирішено для мене ...


2
що це насправді робить?
Simon_Weaver

1
Створює локальну базу даних SQL з назвою "v12.0".
Сокіл Момот,

4
4 години мого життя намагаюся вирішити цю проблему, і ця команда вирішує її за секунду. Він створює новий екземпляр LocalDB із зазначеним іменем та версією. Якщо параметр [номер-версії] опущений, він за замовчуванням має версію збірки SqlLocalDB. -s запускає новий екземпляр LocalDB після його створення. Більше інформації тут: msdn.microsoft.com/en-us/library/hh247716.aspx
Exel Gamboa

FYI, після запуску цього оператора cmd я відредагував з'єднання мого файлу Web.configString Source Source = (LocalDb) \ V12.0; з джерела даних = (LocalDb) \ MSSQLLocalDB;
Девід Алан Кондіт,

Це виправило це для мене, але після ремонту VS перевстановіть мої розширення, які потім примусово перезавантажать або мою машину, і це все, що, на мою думку, було потрібно після створення екземпляра
Ентоні Скотт

36

Зазвичай я виправляю цю помилку після цього повідомлення в блозі 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>

17
Зверніть увагу, що якщо ви хочете редагувати цей файл, переконайтеся, що ви використовуєте 64-розрядний текстовий редактор, такий як блокнот. Якщо ви використовуєте 32-бітну, таку як Notepad ++, вона автоматично відредагує іншу копію файлу в SysWOW64. Годин свого життя я не поверну.
Тайлер

1
@Tyler Я не можу подякувати вам за те, що вказав на це. Шкода, що я прочитав ваш коментар трохи раніше. Провів 3 дні, змінюючи все. ЦЕ ВИРОБЛИВО!
Пірат X

1
О БОЖЕ МІЙ! Дякую Тайлер. Я боровся з тим самим, і ти врятував мене від того, щоб витратити ще 2 години!
130nk3r5


Куди у файлі це дінеться ??
Ciaran Gallagher

24

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

Possible Issues
 \\ rename the conn string from v12.0 to MSSQLLocalDB -like so-> 
 `<connectionStrings>
      <add name="ProductsContext" connectionString="Data Source= (localdb)\mssqllocaldb; 
      ...`

Я виявив, що найпростішим є зробити наступне - я додав фотографії та кроки для допомоги.

First verify which instance you have installed, Ви можете зробити це, перевіривши реєстр та запустивши cmd

 1. `cmd> Sqllocaldb.exe i` 
 2. `cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore"` 
if this step fails, you can delete with option `d` cmd> Sqllocaldb.exe d "someDb"
 3. `cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"` 
 4. `cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"`

SqlLOCALDb_edited.png


РОЗШИРЕНІRegistry конфігурації пошуку несправностей

Редагування 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

Пошук

SELECT registry_key, value_name, value_data  
FROM sys.dm_server_registry  
WHERE registry_key LIKE N'%SQLAgent%';

або запустіть це в SSMS Sql Management Studio, він надасть повний список усіх встановлень, які ви маєте на сервері

DECLARE     @SQL VARCHAR(MAX)
SET         @SQL = 'DECLARE @returnValue NVARCHAR(100)'
SELECT @SQL = @SQL + CHAR(13) + 'EXEC   master.dbo.xp_regread

 @rootkey      = N''HKEY_LOCAL_MACHINE'',
 @key          = N''SOFTWARE\Microsoft\Microsoft SQL Server\' + RegPath + '\MSSQLServer'',
 @value_name   = N''DefaultData'',
 @value        = @returnValue OUTPUT; 

 UPDATE #tempInstanceNames SET DefaultDataPath = @returnValue WHERE RegPath = ''' + RegPath + '''' + CHAR(13) FROM #tempInstanceNames 

 -- now, with these results, you can search the reg for the values inside reg
 EXEC (@SQL)
 SELECT      InstanceName, RegPath, DefaultDataPath
 FROM        #tempInstanceNames

Усунення несправностей Networkконфігурацій

SELECT registry_key, value_name, value_data  
FROM sys.dm_server_registry  
WHERE registry_key LIKE N'%SuperSocketNetLib%';  

1
видалення та додавання БД, для якої працював. Використання VS Community 2017 та курсу MVA з MVC
Jeroen

Який ключ реєстру ви дивитесь ??
Адам Плочер

@AdamPlocher на зображенні reg вище ви бачите, що corresponding software SQL server versionsце може осиротіти в деяких випадках. Отже, якщо ви вирішили повторити встановлення, найкраще перевірити, чи були вилучені ці ключі, та перевстановити. Якщо це не те, що ви шукаєте, допоможіть мені краще зрозуміти ваше запитання, і я спробую вам допомогти. Я витратив багато часу на усунення несправностей
трансформатор

@Jeroen рада, що змогла допомогти :)
трансформатор

@transformer ні на скріншоті, ні у вашій відповіді не вказано, який шлях перевірити в реєстрі. На скріншоті відображається ключ Microsoft SQL Server у реєстрі, але він не відображає батьківські ключі. У вашій відповіді сказано "Спочатку перевірте, який екземпляр ви встановили, ви можете зробити це, перевіривши реєстр", але не вказуєте, де в реєстрі потрібно перевірити. Який шлях до реєстру? Thx
Адам Плочер

13

Екземпляр може бути пошкоджений або неправильно оновлений.

Спробуйте ці команди:

C:\>sqllocaldb stop MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" stopped.
 
C:\>sqllocaldb delete MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" deleted.
 
C:\>sqllocaldb create MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" created with version 13.0.1601.5.
 
C:\>sqllocaldb start MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" started.

Ця порада, схоже, повторює дану @transformer?
Caius Jard

8

можливо ця помилка виникла через помилку versionSql Serveris not installed

connectionString="Data Source=(LocalDB)\v12.0;....

і вам не потрібно його встановлювати

швидко виправити , щоб змінити його в будь-який встановленої версії у вас є

у моєму випадку я змінюю його з v12.0наMSSQLLocalDB


У моєму випадку це створює проблему з використанням MssqllocalDb, але відображається помилка: /
Ахмад,

4

Остаточне рішення цієї проблеми знаходиться нижче:

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

  2. У рядок підключення до бази даних додайте нижче атрибут: Integrated Security = SSPI


Шлях до ApplicationHost: C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config. Цей допис дав мені зрозуміти: social.msdn.microsoft.com/Forums/vstudio/en-US/…
Mamdouh

3

Я зіткнувся з тією ж проблемою. Моє виправлення змінювалось <parameter value="v12.0" /> на <parameter value="mssqllocaldb" /> файл "app.config".


3

Всі БУДЬ ЛАС, зверніть увагу, що сказав Тайлер

Зверніть увагу, що якщо ви хочете редагувати цей файл, переконайтеся, що ви використовуєте 64-розрядний текстовий редактор, такий як блокнот. Якщо ви використовуєте 32-бітну, таку як Notepad ++, вона автоматично відредагує іншу копію файлу в SysWOW64. Годин свого життя я не поверну


2

У моєму випадку у нас було кілька проектів в одному рішенні, і ми вибрали інший стартовий проект, ніж у консолі диспетчера пакетів, під час запуску команди "Оновлення бази даних" із міграцією першого коду. Не забудьте вибрати правильний проект запуску.


2

Я вирішив вищезазначену проблему, застосовуючи кроки нижче

введіть тут опис зображення

А після того, як ви внесли ці зміни, виконайте наступні зміни у своєму 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" />

Перевірте також рядок вашого зв’язку
Sagar Shinde

0

Моя проблема полягала в тому, що у мене було встановлено кілька версій MS SQL express. Я пішов до інсталяційної папки C: / ProgramFiles / MicrosoftSQL Server /, де знайшов 3 його версії. Я видалив 2 папки і залишив лише MSSQL13.SQLEXPRESS, який вирішив проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.