Microsoft JET Database Engine error '80004005'


The following error typically occurs when your script attempts to perform an UPDATE or some other action that alters the information in the database.

Microsoft JET Database Engine error '80004005'

The Microsoft Jet database engine cannot open the file 'C:\Inetpub\vhost\YourSite\Databases\YourDatabase.mdb'.
It is already opened exclusively by another user, or you need permission to view its data.

/YourSite/YourDataAccessPage.asp, line 15


The above error occurs because ADO(ActiveX Data Objects) is unable to write to the Microsoft Access database due to insufficient write/modify permissions, which can be easily fixed by granting read/write to IUSR_<machineName> and IWAM_<machineName>.

IUSR_<machineName> and IWAM_<machineName> come into focus when an anonymous web user needs to modify the Microsoft Access database & while doing so Jet creates an .ldb file to handle database locking. If the above mentioned 2 users don't have the necessary permissions, the lock file isn't created & ultimately the Microsoft Access database can't be modified.

To fix this problem,

1. Make sure that the MDB file itself isn't marked as read-only.
2. Right click the folder in which the *.mdb files belongs and choose the properties option and select the Security tab. Give read/write permissions to IUSR_<machineName> and IWAM_<machineName> users. If there is no such users listed in it, add those users for that folder.

There is also an alternate solution for this issue. You can find a user called 'everyone', add this user for the folder in which *.mdb belongs and give read/write permissions. But this is not good because of security reasons.