Mensaje de error cuando se solicita la página ASP que se conecta a una base de datos de Access en IIS 7.0: "Error '80004005' del motor de base de datos de Microsoft JET"

Importante: este artículo contiene información que muestra cómo reducir la configuración de seguridad o desactivar las características de seguridad en un equipo. Puede realizar estos cambios para solucionar un problema específico. Antes de realizar estos cambios, le recomendamos que evalúe los riesgos asociados con la implementación de esta solución en su entorno concreto. Si decide implementar esta solución, tome las medidas adicionales oportunas para ayudar a proteger el equipo.

Síntomas

Considere el siguiente escenario. En un servidor Web que ejecuta Servicios de Microsoft Internet Information Services (IIS) 7.0, aloja una página active server (ASP) que se conecta a una base de datos. El proveedor de datos de página ASP es el proveedor de datos Microsoft.Jet.OLEDB.4.0. El origen de datos de página ASP es un archivo de base de datos (.mdb) de Microsoft Access. En este escenario, puede recibir el siguiente mensaje de error cuando se solicita la página ASP:
Error '80004005' de Microsoft JET Database Engine

Error no especificado
Nota: Encontrará un mensaje de error similar al utilizar las dos opciones siguientes:
  • Una base de datos de Microsoft Access en el formato de archivo de Access 2007 (.accdb)
  • El proveedor de datos Microsoft.ACE.OLEDB.12.0

Causa

Este problema puede producirse si IIS 7.0 está configurado para cargar el perfil de usuario actual para una identidad del grupo de aplicaciones. Esto puede causar problemas de compatibilidad con aplicaciones heredadas basadas en ASP y aplicaciones basadas en ADO porque el usuario actual no tenga permisos suficientes para escribir en el directorio temporal.

Solución

Para resolver este problema, debe agregar las entradas de control de acceso correctas al directorio temporal para la identidad del proceso. Para ello, siga los pasos para su sistema operativo.

Windows Server 2008 y Windows Vista con SP1 o versiones posteriores

Para resolver este problema en un servidor Web de IIS 7.0 que se ejecuta en Windows Server 2008 o Windows Vista con SP1 o versiones posteriores, siga estos pasos:
  1. Haga clic en Inicio, en Todos los programas y en Accesorios. Haga clic derecho Símbolo del sistema y, a continuación, haga clic en Ejecutar como administrador.
  2. Cuando se le pida una contraseña de administrador o una confirmación, escriba la contraseña o haga clic en continuar.
  3. Escriba el comando siguiente y, a continuación, presione ENTRAR:
    Icacls %SystemDrive%\Windows\Temp \\nombreDeEquipo\nombreDeServicio Users:(CI)(S,WD,AD,X)

    Nota: Este comando permite a cada usuario crear archivos y directorios en el directorio temporal.
  4. Escriba el comando siguiente y, a continuación, presione ENTRAR:
    Icacls %SystemDrive%\Windows\Temp \\nombreDeEquipo\nombreDeServicio "creador de OWNER":(OI)(CI)(IO)(F)

    Nota: El usuario que crea un archivo o un directorio en el directorio temporal es el Creador propietario. La entrada de control de acceso Creador propietario concede a un usuario control completo sobre el archivo o sobre el directorio. Otros usuarios no pueden tener acceso a estos archivos y directorios porque no son el Creador propietario.
RTM de Windows Vista

Para resolver este problema en un servidor Web de IIS 7.0 que se ejecuta en Windows Vista RTM, siga estos pasos:
Nota: De forma predeterminada en Windows Vista RTM, la identidad del proceso es NetworkService y el directorio temporal es % windir%\ServiceProfiles\NetworkService\AppData\Local\Temp.
  1. Haga clic en Inicio, en Todos los programas y en Accesorios. Haga clic derecho Símbolo del sistema y, a continuación, haga clic en Ejecutar como administrador.
  2. Cuando se le pida una contraseña de administrador o una confirmación, escriba la contraseña o haga clic en continuar.
  3. Escriba el comando siguiente y, a continuación, presione ENTRAR:
    Icacls %windir%\serviceprofiles\networkservice\AppData\Local\Temp \\nombreDeEquipo\nombreDeServicio Users:(CI)(S,WD,AD,X)

    Nota: Este comando permite a cada usuario crear archivos y directorios en el directorio temporal.
  4. Escriba el comando siguiente y, a continuación, presione ENTRAR:
    Icacls %windir%\serviceprofiles\networkservice\AppData\Local\Temp \\nombreDeEquipo\nombreDeServicio "creador de OWNER":(OI)(CI)(IO)(F)

    Nota: El usuario que crea un archivo o un directorio en el directorio temporal es el Creador propietario. La entrada de control de acceso Creador propietario concede a un usuario control completo sobre el archivo o el directorio. Otros usuarios no pueden tener acceso a estos archivos y directorios porque no son el Creador propietario.

Solución alternativa

Para resolver este problema, utilice el método que se describe en la sección "Solución". Sin embargo, si no desea agregar entradas de control de acceso al directorio temporal para la identidad del proceso, puede solucionar temporalmente el problema deshabilitando la propiedad loadUserProfile para el grupo de aplicaciones. Cuando esta propiedad está deshabilitada, IIS 7.0 no carga el perfil de usuario actual para el grupo de aplicaciones.

Importante: Si deshabilita esta propiedad, se puede crear un riesgo de seguridad. Asegúrese de que entiende y evalúa los riesgos antes de implementar esta solución temporal.

Para deshabilitar la propiedad loadUserProfile para el grupo de aplicaciones, modifique el archivo ApplicationHost.config. En el ejemplo siguiente se muestra cómo hacerlo.
<applicationPoolDefaults>    <processModel identityType="NetworkService" loadUserProfile="false" />
</applicationPoolDefaults>

Referencias

Para obtener más información acerca de temporal permisos de directorios al ejecutar una consulta de base de datos en una página ASP, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

315456 recibe un mensaje de error de resultados de base de datos cuando se conecte a la base de datos desde una página ASP en FrontPage

Mediante ASP clásica con bases de datos de Microsoft Access en IIS 7.0 e IIS 7.5

http://learn.iis.net/page.aspx/563/using-classic-asp-with-microsoft-access-databases-on-iis-70-and-iis-75/
Propiedades

Id. de artículo: 926939 - Última revisión: 14 ene. 2017 - Revisión: 2

Comentarios