MS Access 0x80004005

Results 1 to 2 of 2

Thread: MS Access 0x80004005

  1. #1
    Join Date
    Dec 1969

    Default MS Access 0x80004005

    I&#039;m using a System DSN to connect to an MS Access db. At the same time I&#039;m periodically grabbing data from it into a Navision database, using the same DSN. <BR> Every other time, the ASP page gives me the error:<BR>======================================== ===============<BR> Microsoft OLE DB Provider for ODBC Drivers (0x80004005)<BR> [Microsoft][ODBC Microsoft Access Driver] Could not use<BR> &#039;(unknown)&#039;;file already in use.<BR>========================================== =============<BR> I was under the impression that the DSN would manage the connections and keep the requests from colliding. Am I wrong? Is the requests from the ASP page and the Navision process coming in simultaneously the reason for this error?<BR> I have eliminated all other causes - the anonymous internet user has permissions on the Access db folder; IIS 5.0 Allow IIS to control password is unchecked;MDAC 2.8 is up-to-date;<BR> Is there a way I could set up a service of any kind for this MS Access so that multiple requests can be managed without erroring out? On the DSN I have the Threads set to 100. <BR> Any help is appreciated, as I have been struggling with this issue for months!!!!<BR>TIA

  2. #2
    Join Date
    Dec 1969

    Default Just FYI...

    an error code of 0x80004005 is *actually* just a generic code that means "memory error". It can be caused by lots of things, including the actual error that you are seeing.<BR><BR>Your impression that a DSN would somehow protect you from multiple users "colliding" is, I&#039;m sorry to say, very much incorrect.<BR><BR>Yes, the simultaneous requests are undoubtedly the problem.<BR><BR>Access uses a *VERY* simple locking mechanism: It creates a ".ldb" file with the same base name as the ".mdb" file, and if that file exists then no other app can use the DB. <BR><BR>The number of threads is kind of irrelevant for Access DBs. That&#039;s because Access is *NOT* a true database server. Instead, it is just a DLL that gets linked in with your application (in the case of ASP, it gets linked in with IIS and VBScript and ADO and all the other DLLs). So separate applications that are using the Access (or JET) DLL do *not* know about each other in any way, except via the ".ldb" file.<BR><BR>Incidentally, if both "users" are only reading the DB then you should not be seeing this conflict. Access does allow multiple readers. If both are reading, then it may be that one or the other is opening the DB for write even though it doesn&#039;t need to.<BR><BR>It&#039;s possible that it is time to consider upgrading to SQL Server (or MySQL?), where the DB truly *is* run under a server application, independent of all apps that make requests of it. You might take a peek at SQL Server Express, here:<BR><BR>Free BETA version.<BR><BR>

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts