Ошибка: не удалось создать пользовательский экземпляр SQL Server.

Я пытаюсь подключиться к MDF. Я даже пошел на то, чтобы полностью переустановить SQL Server Express (теперь это единственный вариант SQL, установленный на моем компьютере, где раньше у меня были 05 dev и Express). Я проверил, что все пути верны, и до сих пор мой google-fu не помог.

Полное сообщение об исключении:

Не удалось создать пользовательский экземпляр SQL Server из-за сбоя при запуске процесса для пользовательского экземпляра. Соединение будет закрыто.

Строка подключения:

<add name= "CustomerEntities"
     connectionString="metadata=res://*/Data.CustomerModel.csdl|res://*/Data.CustomerModel.ssdl|res://*/Data.CustomerModel.msl;
     provider=System.Data.SqlClient;
     provider connection string='Data Source=.\SQLEXPRESS;
     AttachDbFilename=\App_Data\CustomerDb.mdf;
     Integrated Security=True;
     User Instance=True'"
     providerName="System.Data.EntityClient" />

Дополнительная информация:

Несколько ссылок на эту ошибку, которые я нашел в Интернете, ко мне не относятся. Например, я видел, где эта ошибка возникает при попытке запустить экземпляр пользователя через удаленный рабочий стол (я делаю это локально). В то время как другой предполагает, что это связано с оставшимися файлами от старой экспресс-установки ... Я просмотрел указанные места и не нашел этих артефактов. Я также пытался запустить sp_configure 'user instances enabled', '1', но он сказал, что он уже установлен на 1.


person Joel Martinez    schedule 11.11.2008    source источник


Ответы (11)


хорошо, теперь работает! думаю, это была сложная проблема... шаги, которые я предпринял для ее решения, таковы:

  1. Изменено следующее свойство в строке подключения (обратите внимание на небольшую разницу): AttachDbFilename=|DataDirectory|CustomerDb.mdf;
  2. Удалено содержимое следующего каталога: c:\Users\<user name>\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS. Я думал, что искал это раньше, но на самом деле я искал в папке Microsoft Sql Server. Опять тонкая разница.

Как только я сделал эти две вещи, соединение заработало :-D

person Joel Martinez    schedule 11.11.2008
comment
Супер классный. Это помогло и мне! Я искал несколько статей, и все они каким-то образом ошиблись. Важной частью является AppData в вашей пользовательской папке. Спасибо, что спасли меня от сумасшествия! - person gyurisc; 25.03.2011
comment
Ничего не стоит этот пост появляется в результатах как структура сущности. Я использую LINQ to SQL (не Entity Framework) и обновился до SQL Server Express R2, и шаг 2 устранил мою проблему. Ни один из моих проектов Visual Studio не мог подключиться к SQL Express после обновления, пока не было выполнено это исправление. Конкретная структура не имеет значения - похоже, это общая проблема SQL Server Express. Спасибо! - person Chris Moschini; 08.07.2011
comment
На самом деле я был готов выполнить чистую установку Windows, когда нашел это, № 2 все исправил, спасибо, Джоэл. - person Wyatt Barnett; 02.11.2012
comment
То же самое и с № 2 - применил старую магию MS. - person James Fleming; 26.11.2012
comment
Я сделал # 2, теперь я получаю следующую ошибку: Ошибка, связанная с сетью или конкретным экземпляром, при установлении соединения с SQL Server. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на разрешение удаленных подключений. (поставщик: Сетевые интерфейсы SQL, ошибка: 26 — Ошибка при обнаружении указанного сервера/экземпляра). Я даже больше не могу получить доступ к SQL-серверу из SSMS... очень сожалею, что попробовал это прямо сейчас. - person mneumann; 27.07.2018

Я столкнулся с той же ошибкой, когда перенес код с одной машины на другую. я использую VS2010, и SQLEXPRESS 2008 идет вместе с ним.

Трюк, удаление всего содержимого из следующей папки «C:\Users\UserName\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS» сработало для меня.

person DSH    schedule 08.01.2014
comment
почти уверен, что в этой папке были файлы из более старой версии SQL Express. - person JJS; 15.05.2016
comment
Спасибо. Это сэкономило мне день. - person Nisha; 06.03.2017

Даже несмотря на то, что приведенные выше ответы решили проблему многих людей, я все еще нахожу, что они не соответствуют сути проблемы. Ближе всего к этому ответ @sohaiby выше. Но это ошибочно относится к использованию Management Studio.

Сообщение об ошибке в верхней части этого раздела очень четко говорит о том, что проблема связана с созданием экземпляра пользователя. Что такое экземпляр и как он используется, подробно описано здесь: https://msdn.microsoft.com/en-us/library/ms254504(v=vs.110).aspx

Лично я столкнулся с этой проблемой при переключении подключения к БД из режима аутентификации Windows на аутентификацию SQL Server. Я решил эту проблему, просто изменив часть строки подключения на: "User Instance=false;" вместо "User Instance=true;", которая отлично работала с проверкой подлинности Windows.

После того, как я изменил на «Экземпляр пользователя = false;» у меня подключение работало нормально без всяких дополнительных манипуляций. Я не могу настаивать на том, что это сработает или подойдет во всех сценариях. Тем не менее, я определенно рекомендую попробовать его перед другими радикальными методами, описанными выше, такими как стирание рабочих каталогов SQL-сервера.

person Boris Zinchenko    schedule 24.12.2015

В дополнение к другим решениям здесь, это также может быть полезно. Убедитесь, что пул приложений работает как сетевая служба, а не как ApplicationPoolIdentity.

Это решение было найдено здесь: http://blogs.msdn.com/b/webdevelopertips/archive/2010/05/06/tip-106-did-you-know-how-to-create-the-aspnetdb-mdf-file.aspx

person Derrick    schedule 22.08.2011

Как отмечали другие, удаление содержимого каталога: c:\Users\\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS решило это для меня. Примечание, которое может помочь другим, в Windows 7 при просмотре каталога c:\users\username из браузера документов не отображается папка AppData, которая на некоторое время отбросила меня (так как я думал, что у меня нет каталога AppData) до тех пор, пока Я обнаружил, что он действительно существует (но не отображается в браузере документов в Windows 7), вам просто нужно ввести полный путь, чтобы добраться до него.

person Jarnal    schedule 01.06.2012
comment
Это просто скрытый приятель, зайдите в инструменты -> показать скрытые файлы и папки будет работать - person Sourav Sarkar; 06.07.2016

Я фазирую эту проблему с моим файлом mdf в приложении формы Windows, и я просто перезагружаю свой компьютер, и моя проблема решена.

person Kishan    schedule 17.11.2016

Просто перейдите в файл web.config. Измените 'Connection String'="....../.../......?.......; User Instance=True'" на ". ...../.../......?.......; Экземпляр пользователя = False'"

Да, это может вызвать некоторые проблемы с безопасностью, но для некоторых практических проектов школы/колледжа (что было в моем случае) это может запустить ваш проект.

изменить с User Instance=True на User Instance=False в web.config

person Harshil Parekh    schedule 24.03.2020

Я столкнулся с проблемой, когда использовал SqlLocalDB и SqlExpress. Причина проблемы: когда я подключаюсь к localdb из Visual Studio, для него запускается экземпляр LocalDB, который работает от имени нашей учетной записи Windows. Но когда веб-приложение, работающее в IIS как сетевая служба или AppPoolIdentity, подключается к LocalDB, для него запускается другой экземпляр LocalDB, который работает как сетевая служба или AppPoolIdentity. В результате, хотя и Visual Studio, и веб-приложение используют одну и ту же строку подключения LocalDB, они подключаются к разным экземплярам LocalDB. Очевидно, что база данных, созданная в Visual Studio в нашем экземпляре LocalDB, не будет доступна в экземпляре LocalDB веб-приложения. Решение: Итак, здесь я перечислил решения для обоих случаев (т.е.) SqlExpress и LocalDB Если мы используем LocalDB в качестве источника данных:

  1. Установите идентификатор пула приложений в качестве сетевой службы
  2. Обновите файл applicationHost.config, включив в него следующие выделенные параметры:

‹processModel identityType=NetworkService loadUserProfile=true setProfileEnvironment=true /›

  1. Измените SqlLocalDB как общий экземпляр, выполнив приведенную ниже команду в CMD.exe в режиме администратора SqlLocalDB.exe share MyLocalDB MySharedLocalDB

(Здесь MyLocalDB — мой локальный экземпляр базы данных. Вы можете найти то же самое, выполнив следующую команду в CMD.exe в режиме администратора SqlLocalDB.exe). Таким образом, моя строка подключения выглядит следующим образом: ‹add name= DefaultConnection connectionString=Data Source=(localdb)\ .\MySharedLocalDB;AttachDbFilename=|DataDirectory|\aspnet-DemoSite-20200716010415.mdf;Initial Catalog=aspnet-DemoSite-20200716010415;ID пользователя=sa;Пароль =welcome123;Экземпляр пользователя=false

  1. Поскольку я размещаю приложение в IIS, я удостоверяюсь, что учетная запись NT AUTHORITY\NETWORK SERVICE имеет доступ для чтения/записи к корневой папке приложения, чтобы избежать исключения «Отказано в доступе», и разрешаю учетной записи в качестве системного администратора доступ SqlInstance, выполнив приведенный ниже SQL-запрос exec sp_addsrvrolemember 'NT AUTHORITY\NETWORK SERVICE', sysadmin

Если мы используем SqlExpress в качестве источника данных:

1. Убедитесь, что строка подключения имеет правильное значение, как показано ниже: ‹add name = DefaultConnection connectionString = Data Source =. Catalog=aspnet-DemoSite-20200716010415;Идентификатор пользователя=sa;Пароль=welcome123;Экземпляр пользователя=false 2. Как указано выше, Джейн, удалите старые файлы, расположенные в папке C:\Users‹userName›\AppData\Local\Microsoft\Microsoft SQL. Данные сервера\SQLEXPRESS

person Thamizh    schedule 10.07.2020

Я начал получать эту ошибку сегодня утром в тестовой среде развертывания. Я использовал SQL Server Express 2008, и ошибка, которую я получал, была

Не удалось создать пользовательский экземпляр SQL Server из-за сбоя при запуске процесса для пользовательского экземпляра. Соединение будет закрыто.

Не зная, что вызвало это, я следовал инструкциям в этом сообщении и в другом сообщении об удалении каталога C:\Users\UserName\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS, но безрезультатно.

В чем хитрость для меня заключалась в том, чтобы изменить строку подключения с

"Data Source=.\SQLExpress;Initial Catalog=DBFilePath;Integrated Security=SSPI;MultipleActiveResultSets=true"

to

"Data Source=.\SQLExpress;Initial Catalog=DBName;Integrated Security=SSPI;MultipleActiveResultSets=true" 
person Hamid Shahid    schedule 13.06.2013

Чтобы исправить это, откройте SQL Server Management Studio Express. В редакторе запросов введите этот текст:

sp_configure 'user instances enabled', 1;
 RECONFIGURE

Запустить его. Затем перезапустите базу данных SQL Server.

person sohaiby    schedule 21.07.2014
comment
Если экземпляр сервера sql не генерируется, как вы можете открыть Management Studio? - person Sourav Sarkar; 06.07.2016

Вы пытались подключиться к экземпляру SQL Server с помощью SQL Management Studio?

Если это также не позволяет вам подключиться, это может быть связано с тем, что служба SQL не запускается правильно.

Убедитесь, что служба работает, проверив службы на панели управления.

person Jimoc    schedule 11.11.2008