我有一个经典的 ASP 应用程序,我已经从运行 IIS6.0 的 Windows 2003 服务器迁移到运行 IIS7 的 64 位 Windows 2008 R2。在 IIS7 中,我创建了一个网站并向其中添加了一个应用程序,并将应用程序池设置为启用 32 位应用程序。
该应用程序使用 ORAOLEDB 驱动程序连接到 Oracle 数据库 - 我已经安装了 64 位 Oracle 客户端 11.2.0.3 以连接到后端 Oracle 11g 数据库,并且可以通过与使用 SQLPlus 的应用程序相同的用户正常连接。
但是,当我运行该应用程序时,它尝试连接到 Oracle 失败,IIS 日志显示错误:
“找不到提供程序。它可能没有正确安装”
我尝试了各种可能的方法来尝试使其正常工作:
- 手动注册 OraOLEDB11.dll
- 从应用程序池中禁用 32 位应用程序
- 使用 32 位驱动程序,而不是同时启用和禁用 32 位应用程序
- 完全重新安装驱动程序并尝试以上所有方法
到目前为止没有任何运气。asp代码连接如下:
objOracleConnection.CursorLocation = adUseClient
objOracleConnection.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=MYDATASOURCE;User ID=USER;Password=PASSWORD;PLSQLRSet=1;OLE DB Services=-2;"
objOracleConnection.Open
编辑:我尝试了一个简单的 VBS 脚本(使用与上面基本相同的代码)进行连接,它得到了相同的错误,所以 IIS 可能不是问题。然而,完全相同的脚本也适用于 Windows 2003 机器。
我已经通过“疑难解答兼容性”选项重新安装了 Oracle 客户端,表明该应用程序在 Windows 2003 SP1 下工作,但仍然从 VBS 脚本和 IIS 应用程序中遇到相同的问题 :(