• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 939
  • Last Modified:

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
0
Edge IT Systems
Asked:
Edge IT Systems
  • 5
  • 2
  • 2
1 Solution
 
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
 
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
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
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:
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
 
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

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now