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


8

Я использую Windows 7 Beta и пытаюсь установить веб-приложение локально. Этот веб-сайт использует Microsoft SQL Server 2005 Express (SQLEXPRESS) и файл MDB в папке ~ / App_Data веб-сайта. Мне было поручено настроить IIS7 для использования Classic .NET AppPool для этого веб-приложения.

Каждый раз, когда веб-сайт загружается, я получаю следующую ошибку:

При попытке подключения к серверу базы данных произошла ошибка: не удалось создать пользовательский экземпляр SQL Server из-за сбоя при получении пути к данным локального приложения пользователя. Убедитесь, что у пользователя есть локальный профиль пользователя на компьютере. Соединение будет закрыто.

Интернет заполнен статьями, написанными на эту тему. Господствующая мудрость выглядит так:

  1. Настройте службу SQL Express для использования учетной записи локальной системы .
  2. Удалите следующий каталог: C: \ Users \ имя пользователя \ AppData \ Microsoft \ Данные Microsoft SQL Server \ SQLEXPRESS

Ни одно из этих исправлений не оказало никакого влияния. Я часами возился с разрешениями и настройками безрезультатно. Может кто-нибудь предложить решение или помочь мне понять, как получить более подробную информацию о проблеме.


Под какой учетной записью работает IIS? Вы пытались создать для него аккаунт?
Брент Озар

Ответы:


13

В IIS под Windows 7 выберите пул приложений, а затем «дополнительные параметры». В разделе «Модель процесса» найдите «Загрузить профиль пользователя» и установите для него значение true.

SQL теперь должен загружаться под учетной записью пула приложений по умолчанию.


1

У меня были те же проблемы на моей рабочей станции, но никогда на сервере.

Это временное исправление, которое я нашел некоторое время назад в сети, и похоже, оно работает:

В редакторе запросов введите: exec sp_configure 'экземпляры пользователя включены', 1 затем: Reconfigure

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

нашел эту ссылку сегодня

и после быстрого поиска в StackOverflow /programming/281500/error-failed-to-generate-a-user-instance-of-sql-server


1

Брайан,

Чтобы все это имело смысл, сначала взгляните на список процессов для всех пользователей в диспетчере задач.

w3wp.exe - новый рабочий процесс WWW. Он запускается в изолированной программной среде безопасности с использованием разрешений пользователя с именем DefaultAppPool.

В прежние времена вместо пользователя DefaultAppPool это были пользователи IUSR и IWAM (см. Что такое учетные записи IUSR и IWAM в IIS? ).

При использовании поставщика членства SQL процесс w3wp.exe запустит пользовательский экземпляр SQL Server и подключится к базе данных, указанной в строке подключения, обычно это App_Data / ASPNETdb.mdf. Для запуска пользовательского экземпляра SQL Server требуется локальный профиль, чтобы временные файлы могли куда-то идти.

Действия по устранению неполадок:

  1. Убедитесь, что процесс w3wp.exe запущен пользователем DefaultAppPool.
  2. Убедитесь, что в SQL Server включены пользовательские экземпляры (см. Config_value и run_value)
    exec sp_configure 'user instances enabled'
  3. Если не exec,
    sp_configure 'user instances enabled', 1
    то: перенастроить
  4. Перезапустите SQL Server, на случай, если ASPNETdb.mdf присоединен другим пользовательским экземпляром SQL Server.
  5. Убедитесь, что локальный профиль пользователя C: \ Users \ DefaultAppPool каталог существует. Если нет, включите LocalProfile = True, это создаст локальный профиль. Это делается в IIS Manager, пулах приложений, DefaultAppPool, расширенных настройках ...
  6. Если у вас возникнут дополнительные проблемы с базой данных, используйте диспетчер конфигурации SQL, чтобы подключиться к экземпляру пользователя и посмотреть, была ли подключена БД. Вам необходимо подключиться к правильному instance_pipe_name .
    SELECT 
    owning_principal_name, instance_pipe_name, heart_beat
    FROM
    sys.dm_os_child_instances
    
    
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.