Solved

80004005 error with ASP, IIS 8.5 and Access 2010

Posted on 2014-11-20
9
614 Views
Last Modified: 2015-01-31
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
Comment
Question by:Edge IT Systems
  • 5
  • 2
  • 2
9 Comments
 
LVL 52

Expert Comment

by:Scott Fell, EE MVE
ID: 40454913
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
 

Author Comment

by:Edge IT Systems
ID: 40454941
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
 

Author Comment

by:Edge IT Systems
ID: 40454947
Re: Jet

I agree. We stopped using Jet in the connection string when we migrated from Access 2003 to 2007 several years ago.
0
 
LVL 52

Expert Comment

by:Scott Fell, EE MVE
ID: 40454989
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
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 32

Expert Comment

by:Big Monty
ID: 40455618
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
 

Author Comment

by:Edge IT Systems
ID: 40455889
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
 
LVL 32

Expert Comment

by:Big Monty
ID: 40570724
any progress on this?
0
 

Accepted Solution

by:
Edge IT Systems earned 0 total points
ID: 40571303
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
 

Author Closing Comment

by:Edge IT Systems
ID: 40581249
The Classic ASP code originally developed for IIS 6 is now successfully running on our new IIS 8.5 server.
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Running classic asp applications under Windows Server 2008 R2 (x64) and IIS 7 is not as easy as one may think. It took me a while to figure it out while getting error 8002801d a few times. After you install the OS you will need to install the fol…
Overview: This article:       (a) explains one principle method to cross-reference invoice items in Quickbooks®       (b) explores the reasons one might need to cross-reference invoice items       (c) provides a sample process for creating a M…
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now