PRB: Erro 80004005 "O Motor da Base de Dados do Microsoft Jet não consegue abrir o ficheiro '(desconhecido)'"

Sintomas

Quando utiliza Objetos de Dados ActiveX (ADO) ou ODBC para ligar a uma base de dados do Microsoft Access, poderá receber a seguinte mensagem de erro:

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

Existem várias causas para esta mensagem de erro:

  • A conta que o Microsoft Internet Information Server (IIS) está a utilizar (que normalmente é IUSR) não tem as permissões corretas do Windows NT para uma base de dados baseada em ficheiros ou para a pasta que contém o ficheiro.
  • O ficheiro e o nome da origem de dados estão marcados como Exclusivos.
  • Outro processo ou utilizador tem a base de dados do Access aberta.
  • O erro pode ser causado por um problema de delegação. Verifique o método de autenticação (Básico versus NTLM), se existir. Se o cadeia de ligação utilizar a Convenção de Nomenclatura Universal (UNC), tente utilizar a autenticação Básica ou um caminho absoluto, como C:\Mydata\Data.mdb. Este problema pode ocorrer mesmo que o UNC aponte para um recurso local para o computador IIS.
  • Este erro também pode ocorrer quando acede a uma base de dados do Microsoft Access local que está ligada a uma tabela onde a tabela está numa base de dados do Access num servidor de rede.

Resolução

Os seguintes itens correspondem à lista anterior de causas:

  • Verifique as permissões no ficheiro e na pasta. Certifique-se de que tem a capacidade de criar e/ou destruir quaisquer ficheiros temporários. Normalmente, os ficheiros temporários são criados na mesma pasta que a base de dados, mas o ficheiro também pode ser criado noutras pastas, como a pasta WINNT.

    Se utilizar um caminho de rede para a base de dados (UNC ou unidade mapeada), verifique as permissões na partilha, no ficheiro e na pasta.

  • Verifique se o ficheiro e o nome da origem de dados (DSN) não estão marcados como Exclusivos.

  • O "outro utilizador" pode ser o Microsoft Visual InterDev. Feche quaisquer projetos Visual InterDev que contenham uma ligação de dados à base de dados.

  • Simplifique. Utilize um DSN do Sistema que utilize uma letra de unidade local. Se necessário, mova a base de dados para a unidade local para testar.

Referências

Para verificar se existem falhas de acesso a ficheiros, utilize o Monitor de Ficheiros do Windows NT. Para transferir o Monitor de Ficheiros, consulte Windows Sysinternals.