Назад | Перейти на главную страницу

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

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

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

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

В Интернете полно статей, написанных на эту тему. Преобладает мудрость:

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

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

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

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

Брайан,

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

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, Application Pools, DefaultAppPool, Advanced Settings ...
  6. Если у вас возникнут дополнительные проблемы с базой данных, используйте диспетчер конфигурации SQL для подключения к экземпляру пользователя и посмотрите, была ли прикреплена база данных. Вам необходимо подключиться к правильному instance_pipe_name.
    SELECT 
    owning_principal_name, instance_pipe_name, heart_beat
    FROM
    sys.dm_os_child_instances
    
    

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

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

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

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

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

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