Solved

80004005 error with ASP, IIS 8.5 and Access 2010

Posted on 2014-11-20
9
687 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
Three Reasons Why Backup is Strategic

Backup is strategic to your business because your data is strategic to your business. Without backup, your business will fail. This white paper explains why it is vital for you to design and immediately execute a backup strategy to protect 100 percent of your data.

 
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
 
LVL 33

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 33

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

Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you don't have the right permissions set for your WordPress location in IIS, you won't be able to perform automatic updates. Here's how to fix the problem.
Lync server 2013 or Skype for business Backup Service Error ID 4049 – After File Share Migration
Using Microsoft Access, learn some simple rules for how to construct tables in a relational database. Split up all multi-value fields into single values: Split up fields that belong to other things into separate tables: Make sure that all record…
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

829 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