PRB: error 80004005 "El motor de base de datos de Microsoft Jet no puede abrir el archivo '(unknown)'"

Síntomas

Al usar Objetos de datos ActiveX (ADO) u ODBC para conectarse a una base de datos de Microsoft Access, puede recibir el siguiente mensaje de error:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.

Causa

Hay varias causas para este mensaje de error:

  • La cuenta que usa Microsoft Internet Information Server (IIS) (que normalmente es IUSR) no tiene los permisos de Windows NT correctos para una base de datos basada en archivos o para la carpeta que contiene el archivo.
  • El archivo y el nombre del origen de datos se marcan como Exclusivo.
  • Otro proceso o usuario tiene la base de datos de Access abierta.
  • El error puede deberse a un problema de delegación. Compruebe el método de autenticación (Básico frente a NTLM), si existe. Si el cadena de conexión usa la Convención de nomenclatura universal (UNC), intente usar la autenticación básica o una ruta de acceso absoluta, como C:\Mydata\Data.mdb. Este problema puede producirse incluso si el UNC apunta a un recurso que es local para el equipo IIS.
  • Este error también puede producirse cuando se accede a una base de datos local de Microsoft Access vinculada a una tabla en la que la tabla se encuentra en una base de datos de Access en un servidor de red.

Solución

Los siguientes elementos corresponden a la lista anterior de causas:

  • Compruebe los permisos en el archivo y la carpeta. Asegúrese de que tiene la capacidad de crear o destruir archivos temporales. Normalmente, los archivos temporales se crean en la misma carpeta que la base de datos, pero también se pueden crear en otras carpetas, como la carpeta WINNT.

    Si usa una ruta de acceso de red a la base de datos (unidad UNC o asignada), compruebe los permisos en el recurso compartido, el archivo y la carpeta.

  • Compruebe que el archivo y el nombre del origen de datos (DSN) no estén marcados como exclusivos.

  • El "otro usuario" puede ser Microsoft Visual InterDev. Cierre los proyectos de Visual InterDev que contengan una conexión de datos a la base de datos.

  • Simplificar. Use un DSN del sistema que use una letra de unidad local. Si es necesario, mueva la base de datos a la unidad local para probarla.

Referencias

Para comprobar si hay errores de acceso a archivos, use el Monitor de archivos de Windows NT. Para descargar el Monitor de archivos, consulta Windows Sysinternals.