New: When Converting from Access 97
0. DB Programming, Internal Design Standards Practice
I. Problems with Setting an OBJdbConnection Object from VBScript
Take nothing for granted upon the first time usage of an Access 2000 DB. The scenerio I had was that I migrated an Access 97 DB, which previously functioned with serverside VBScript connectivity, to Access 2000 format. (Access 2000 was newly installed at this point.) The .asp file test yeilded the following 500 class error from Access 2000 to the Response.Object:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft] [ODBC Microsoft Access Driver] General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x8cc Thread 0x94c DBC 0x2e361ec Jet'.
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open("Driver={Microsoft Access Driver(*.mdb)};DBQ=" & orgPath & "\whrereEverYourAppIs\yourDB.mdb")
1. Set Windows Temp Directory Priviliges Appropriately (for IUSR)
2. Set Server Application Directory Priviliges Appropriately (for IUSR)
NB: the "Server Application Directory" refers to the area below the server-root, which is the physical directory from whence the server serves. In MS Server 2000 case this is C:\Inetpub\wwwroot\whrereEverYourAppIs , to which one would browse with the URL, http://yourHost/whrereEverYourAppIs .
II. Problems with timing out during a SQL query from the OBJdbConnection Object in VBScript
After fixing the problem with setting the OBJdbConnection Object (I., above), I still kept getting another error:
Provider error '80004005' Unspecified error xxx.asp, line ###
Though none of this is shown in the error message, yhis involved an assumed timeout of the OBJdbConnection Object while accessing the Access 2000 DB. The fix for this is merely to set a timeout value for the OBJdbConnection Object:
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
' Without the following ConnectionTimeout setting application fails intermittently.
OBJdbConnection.ConnectionTimeout = 20
OBJdbConnection.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & orgPath & "\whrereEverYourAppIs\yourDB.mdb")
III. Entry from Bob Doyle skyBug #223:
Trying to get Access 2000 working on skyBuilders at Interland: Access 2000 (apparently) installs a new Jet engine, which requires different permissions on various Temp folders.
Solution: Give the IUSR read and write permissions on the Temp directory (in WINNT) used by the Jet engine to write its .ldb files.
Note that when an Access 97 database is converted to Access 2000, the IUSR does not have permissions on the new file. When we added the IUSR, it came up with Read and with Read and Execute permissions. We had to uncheck Read and Execute, and check Write. Then everything worked.
__________________________________
Symptoms:
Several database connection errors;
Name not valid problem;
Needed .xml in Application Mappings (to .asp).
[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key
'Temporary (volatile) Jet DSN for process 0x544 Thread 0x4c0 DBC 0x14e02024 Jet'.
/timelines/db.inc, line 56
Provider error '80004005'
Unspecified error
/timelines/db.inc, line 56
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key
'Temporary (volatile) Jet DSN for process 0x544 Thread 0x688 DBC 0x23debbc Jet'.
/timelines/db.inc, line 56
IV. Miscellaneous notes related to ODBC for MySQL and MS Windows
V. General Access 2000 Information Note (re: Schema TABLES)
VI. General Access 2000 Information Note (re: SYSTEM TABLES)
This is just information, not a warning. There should be no real reason for even a DB administrator to need to manipulate, or even read Access system tables. If you are doing things with tables of type "SYSTEM TABLES", i.e., DBSchema sytem manipulators, the following tables will need permissions adjustments: MSysAccessObjects, MSysACEs, MSysQueries, and MSysRelationships.