一、现象:
C#程序中需要以Provider=OraOLEDB.Oracle.1方式访问ORACLE数据库。但程序执行时报异常:未在本地计算机注册“OraOLEDB.Oracle.1”提供程序
二、解决方案:
1、在Oracle安装目录找到Oracle的主程序目录,点击鼠标右键->属性->安全,对ASP.NET或者NETWORK SERVICE 帐户赋予允许读、执行权限,并在“高级”中保证该目录的子目录、文件都继承这些属性。
2、服务器ORACLE为10g,虽然安装时选择了Oracle Data Provider for .net和Oracle Provider for OLE DB。但是还是需要人工命令行注册一下
regsvr32 D:\oracle\10.2.0\db\BIN\OraOLEDB10.dll。
其他观点:
解决方法如下:
1)到ORACLE_HOME目录,如c:\Oracle\Ora92 点击鼠标右键->属性->安全, 对ASP.NET 帐户赋予允许读、执行权限,并在“高级”中保证该目录的子目录、文件都继承这些属性,确定。
2)重新注册oraoledb.dll: regsvr32 $\oracle\ora92\bin\oraoledb.dll 2 这种情况有3种可能的原因 1.装Oracle 的机器是不是NTFS的?如果是的话,将\Ora81下的BIN的权限,全部放开,给所有用户。 (不然在B/S结构下会因为没有权限访问目录而报这个错误) 2.如果数据库服务器是Oracle816的。在服务器的那台机器上找Ora81\network\ADMIN下的sqlnet.ora文件,把里面的 SQLNET.AUTHENTICATION_SERVICES= (NTS)改成 SQLNET.AUTHENTICATION_SERVICES= (NONE) (这种会造成某些机器上报驱动初始化失败的错误,在用OracleClient下出现过一次) 3.如果以上都没有解决问题。可以考虑是不是注册表里 ...
参考出处:http://blog.sina.com.cn/s/blog_4d5a94ae0100fcq9.html
===========================================================
使用ADO连接oracle数据库时,连接串使用Provider=OraOLEDB.Oracle时提示“未找到提供程序。该程序可能未正确安装”。
原因:正如提示信息所说
查看oracle安装目录下的BIN目录,发现没有OraOLEDB*.dll
解决方法:
下载对应的驱动程序,或从运行正常的机器上拷贝上述dll文件
然后注册其中的 OraOLEDB10.dll(其它版本的oracle可能后面的数字会跟随变化)
注册方法:
在其所在目录下执行
regsvr32 OraOLEDB10.dll
备注说明:
对于各种数据库的连接方式,可参考www.connectionstrings.com
另外,这个网站也提供各个驱动的下载链接。
参考出处:http://blog.csdn.net/dux003/article/details/5653737
===========================================================
网上还有关于文件夹权限的操作,现在也一起检查是否这种可能性导致的错误。如下
运行B/S程序时,出现标题上的错误信息,以下面的方法解决:
1.首先确保服务器已安装“Oracle Provider for OLE DB”提供程序。
2.找到Oracle的安装目录,如“D:\oracle92”,为该目录添加Everyone用户,并给予完全控制权限,在高级中勾选上“用在此显示的可以应用到子对象的项目替代所有子对象的权限项目”,确定后就可以访问了,附权限设置图例。
参考出处:http://blog.163.com/y_p_xu/blog/static/1708571022011215120175/
================================================================
网上还有对IIS服务器进行设置的,参考如下
因工作关系好久没有搞网站了,最近在搞一个ASP的宣传网站,本想在本地测试遇到一些问题,整理记录下以备日后有需。
演示环境:W7 旗舰版64位 + IIS7 + ASP网站
错误信息如下:
ADODB.Connection 错误 '800a0e7a'
未找到提供程序。该程序可能未正确安装。
/admin/Inc/Conn.asp,行 23
在出现这个错误之后做了几个判断:
1、此套ASP网站 在正式服务器部署正常,也就可以证明网站代码是OK的;
2、IIS安装正常,运行正常,使用其他网站也可以;
3、是不是站点权限问题?检查多站是正常的。
后来想到是不是应用程序池的问题因为系统是64位的,检查了应用有32位应用程序的设置,一修改好了。
解决方法:
找到IIS应用程序池,“设置应用程序池默认属性”->“常规”->”启用 32 位应用程序”,设置为 True。
这样我的问题就解决了。。
参考出处:http://www.3lian.com/edu/2014/07-09/154710.html