Problem
When you are deploying a classic ASP application that uses an Access
database you may see this error because the lock file for the Access
database cannot be created. To further explain this scenario: Access
databases are kept in files that use an .MDB file name extension. When
you try to add to the database or update the data, the Microsoft JET
database engine attempts to create a lock file with that uses an .LDB
file name extension. If the Access database is stored within the content
area of your Web site, by default the JET database engine will not have
sufficient access permissions to update the database and you will see
the following error message displayed in a Web browser:
Microsoft JET Database Engine error '80004005'
Operation must use an updateable query.
/example.asp, line 100
Solution
This error clearly lists the lock file as the cause of the failure. To
resolve the issue, you can grant the application pool's impersonated
identity read/write permission to the folder where the Access database
is located, but that poses a security risk for your Web site. A better
solution would be to move the Access database out of your Web site's
content area to a folder where the application pool's impersonated
identity has read/write permission, then create a System Data Source
Name (DSN) that points to the database location. Your ASP code would
then reference the System DSN in the connection string instead of the
physical path of the database, which is also better for security. If you
must store the database in the content area, you should always store
the database in a folder that is blocked by default by the IIS
request-filtering features, such as the App_Data folder.
Right-click on Ms Access > Properties > Security > IIS_IUSRS (Full Control) and Users (Full Control)
No comments:
Post a Comment