80004005 error with ASP, IIS 8.5 and Access 2010

Any assistance on the following problem caused by upgrading from IIS6 to IIS8.5 would be really appreciated.

We are getting 80004005 errors after moving a very mature, ASP portal from a virtual, Windows 2003 IIS 6 server to a new, virtual, Windows 2012 R2 IIS 8.5 server.

We have kept the existing IIS6 server in production whilst we resolve this.

The portal was originally developed 8 years ago and has been maintained and run on the same Windows 2003 server since it was first launched. 1 year ago we upgraded the AD to Windows 2012 R2 and we have migrated all of our servers to 2012 R2 except the web server.

The new web server is hosted on the same Windows 2012 R2 Hyper-V server as the original web server which has been successfully moved to another Hyper-V server.

The portal was originally developed for Access 2003 mdb and then upgraded to Access 2007 accdb. For the last 8 months we have been using the portal with Access 2010 without any modifications to the portal or any problems.

The Access 2010 databases are accessed via ODBC and we get 80004005 if the database is held locally on the web server or on our physical, Windows 2012 R2 file server.

2 of the 3 portals are working without errors and they open a single database.

The problematic portal successfully opens a "facility directory" database and then dynamically opens and close sets of 3 other databases as the user navigates from one "facility" to another "facility". We get the 80004005 when we try to run a query on the selected "facility" database, e.g.

error '80004005'
/include/facilities_facility.asp, line 97

----------------------------------------------------------------------
facilties_facility.asp, line 97 is the oRS.Open line:
----------------------------------------------------------------------
            sSQL = "SELECT FacID, Facility, [Use slots] "_
                  & "FROM Facilities "_
                  & "WHERE Facilities.AvailableOnline = 1"
            set oRS = Server.CreateObject("ADODB.recordset")
            oRS.Open sSQL, m_DbConn ,adOpenDynamic, adLockOptimistic    '--- line 97

            GetOnlineFacilities = oRS.GetRows

            oRS.Close
>

'--- Line 97 parameters:
Const adLockOptimistic = 3
Const adOpenDynamic = 2
m_DbConn = oFacilitiesConn

'--- oFacilitiesConn value:
      '--- Facilities Connection ---
      Set oFacilitiesConn = Server.CreateObject("ADODB.Connection")
      oFacilitiesConn.ConnectionString = "DSN=Facilities-" & session("DSN")
      oFacilitiesConn.Open 'Open the connection

'--- example "DSN" value = edl-staff-998
Edge IT SystemsAsked:
Who is Participating?
 
Edge IT SystemsAuthor Commented:
Sorry for not closing this request before.

The solution was to correct all of the "Property Let" statements by prefixing each line with "set " that assigns the database connection string to a private variable in the class.  

See "set m_DbConn = Conn" example below:

<%
Class Example

      '******************** Private variables ********************
      Private m_DbConn, ...


      '******************** Properties ********************

      Public Property Let DbConn(Conn)
            set m_DbConn = Conn
      End Property
...
0
 
Scott Fell, EE MVEDeveloper & EE ModeratorCommented:
You probably need to update your connection string.

http://www.connectionstrings.com/ and specially http://www.connectionstrings.com/access-2010/

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Jet OLEDB:Database Password=MyDbPassword;

Open in new window


I have not used access in a long time and maybe somebody else has a better explanation, but I see people with better knowledge of microsoft say not to use jet and even in connectionstrings.com access/jet does not go past 2003 http://www.connectionstrings.com/microsoft-jet-ole-db-4-0/
0
 
Edge IT SystemsAuthor Commented:
Hi Scott,

Thank you for your post. The string appears to be correct as follows:

oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False; Data Source=E:\edlweb\www\Epitaph\www\db\epitaph_login_db.accdb;"
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
Edge IT SystemsAuthor Commented:
Re: Jet

I agree. We stopped using Jet in the connection string when we migrated from Access 2003 to 2007 several years ago.
0
 
Scott Fell, EE MVEDeveloper & EE ModeratorCommented:
In your question example you are using a DSN connection and not a DSN-LESS connection?

Do you have write permissions to the folder access is in and any temp folders it uses?  http://support.microsoft.com/kb/926939
0
 
Big MontySenior Web Developer / CEO of ExchangeTree.org Commented:
you may need to run the site in 32-bit mode. by default, iis8.5 runs all apps under 64 bit mode, and this can cause problems with classic asp apps that were originally run in 32 bit mode

http://manasbhardwaj.net/running-32-bit-web-application-iis-8/
0
 
Edge IT SystemsAuthor Commented:
Scott, Thank you we tried the KB but it has not helped yet but our developers will review it tomorrow.

Monty, Thank you, we already have 32 bit mode enabled but I have asked our developers to review the KB.
0
 
Big MontySenior Web Developer / CEO of ExchangeTree.org Commented:
any progress on this?
0
 
Edge IT SystemsAuthor Commented:
The Classic ASP code originally developed for IIS 6 is now successfully running on our new IIS 8.5 server.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.