Error al generar una instancia de usuario de SQL Server


8

Estoy usando Windows 7 Beta e intento instalar una aplicación web localmente. Este sitio web utiliza Microsoft SQL Server 2005 Express (SQLEXPRESS) y un archivo MDB en la carpeta ~ / App_Data del sitio web. Se me indicó que configurara IIS7 para usar Classic .NET AppPool para esta aplicación web.

Cada vez que se carga el sitio web, recibo el siguiente error:

Se produjo un error al intentar conectarse al servidor de la base de datos: no se pudo generar una instancia de usuario de SQL Server debido a un error al recuperar la ruta de datos de la aplicación local del usuario. Asegúrese de que el usuario tenga un perfil de usuario local en la computadora. La conexión será cerrada.

Internet está repleto de artículos escritos sobre este tema. La sabiduría predominante parece ser:

  1. Configure el servicio SQL Express para usar la cuenta del sistema local .
  2. Elimine el siguiente directorio: C: \ Users \ username \ AppData \ Microsoft \ Microsoft SQL Server Data \ SQLEXPRESS

Ninguna de estas soluciones ha tenido ningún impacto. He jugado con permisos y configuraciones durante horas en vano. ¿Alguien puede sugerir una solución o ayudarme a comprender cómo obtener información más detallada sobre el problema?


¿Con qué cuenta de servicio se ejecuta IIS? ¿Has intentado crear una cuenta para ello?
Brent Ozar

Respuestas:


13

En IIS en Windows 7, seleccione el grupo de aplicaciones y luego "configuración avanzada". En "modelo de proceso", busque "Cargar perfil de usuario" y configúrelo como verdadero.

SQL debería cargar ahora bajo la cuenta predeterminada del grupo de aplicaciones.


1

He tenido los mismos problemas en mi estación de trabajo pero nunca en un servidor.

Esta es una solución temporal que encontré hace un tiempo en la web y parece funcionar:

En el editor de consultas, escriba: exec sp_configure 'instancias de usuario habilitadas', 1 y luego: Reconfigure

Luego reinicie la base de datos de SQL Server.

encontré este enlace hoy

y después de una búsqueda rápida en StackOverflow /programming/281500/error-failed-to-generate-a-user-instance-of-sql-server


1

Brian

Para que todo esto tenga sentido, primero eche un vistazo a la lista de Procesos para todos los usuarios en el Administrador de tareas.

w3wp.exe es el nuevo proceso de trabajo WWW. Se ejecuta en un entorno limitado de seguridad utilizando los permisos de un usuario llamado DefaultAppPool.

En los viejos tiempos, en lugar del usuario DefaultAppPool, habrían sido usuarios de IUSR e IWAM (consulte ¿Qué son las cuentas IUSR e IWAM en IIS? ).

Cuando utiliza un proveedor de membresía SQL, el proceso w3wp.exe iniciará una instancia de usuario de SQL Server y se adjuntará a la base de datos especificada en la cadena de conexión, comúnmente App_Data / ASPNETdb.mdf. La ejecución de una instancia de usuario de SQL Server requiere un perfil local, de modo que los archivos temporales tengan un lugar adonde ir.

Pasos de solución de problemas:

  1. Asegúrese de que el proceso w3wp.exe sea ejecutado por el usuario DefaultAppPool.
  2. Asegúrese de que SQL Server tenga instancias de usuario habilitadas (consulte config_value y run_value)
    exec sp_configure 'user instances enabled'
  3. Si no es ejecutivo
    sp_configure 'user instances enabled', 1
    , reconfigurar
  4. Reinicie SQL Server, en caso de que ASPNETdb.mdf esté conectado por una instancia de usuario diferente de SQL Server.
  5. Asegúrese de que exista el directorio de perfil de usuario local C: \ Users \ DefaultAppPool. De lo contrario, active LocalProfile = True, esto creará el perfil local. Esto se hace en el Administrador IIS, Grupos de aplicaciones, DefaultAppPool, Configuración avanzada ...
  6. Si tiene más problemas con la base de datos, use el Administrador de configuración de SQL para conectarse a la instancia de usuario y ver si se ha adjuntado la base de datos. Necesitas conectarte a la instancia_pipe_name correcta .
    SELECT 
    owning_principal_name, instance_pipe_name, heart_beat
    FROM
    sys.dm_os_child_instances
    
    
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.