Error 800a0e7a "Provider_cannot_be_found" on IIS7 when using Enable32bitAppOnWin64
Issue
When using Enable32bitAppOnWin64 to run 32-bit applications or components on the x64 edition of Windows Server 2008 the following error may be seen in the IIS logs when creating an ODBC connection in a classic ASP:
YYYY-MM-DD HH:MM:SS 192.168.1.100 GET /page.asp |20|800a0e7a|Provider_cannot_be_found._It_may_not_be_properly_installed. 80 - 192.168.1.100 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.0;+WOW64;+SLCC1;+.NET+CLR+2.0.50727) 500 0 0 0
Example ASP Code:
<%@ EnableSessionState=False LANGUAGE = "VBScript" %>
<% option explicit %>
<%
dim dataConn
set dataConn = server.CreateObject("AdoDb.connection")
dataConn.CursorLocation = 3
dataConn.Open("Provider=OraOLEDB.Oracle;Data Source=DB;User Id=user;Password=password")
dataConn.Close
set dataConn = nothing
%>
Resolution
This is because the OLEDB Provider is a native x64 application and is registered with the native x64 registry (HKEY_LOCAL_MACHINE\SOFTWARE), where as the 32-bit IIS worker process (w3wp.exe *32) is using the WoW64 redirected registry (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node).
To resolve the issue either install the 32-bit version of the OLEDB Provider, or disable Enable32bitAppOnWin64.
References
Products
Oracle Database 10g
Microsoft Windows Server 2008 x64
Microsoft Internet Information Services 7.0
Created: 2nd June 2009
Updated: 4th June 2009
© 2005-2024 Jamie Morrison