Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9138083
  • 博文数量: 1725
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 19840
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1725)

文章存档

2024年(1)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: WINDOWS

2012-01-16 14:13:08

1
重装系统后,因为刚拿到一个oracle9.2的正版软件,一时高兴就装上了。可是发现项目不能用了,出现以下 异常:System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: 未在本地计算机上注册“OraOLEDB.Oracle”提供程序。 ---> System.Data.OleDb.OleDbException: 没有可用的错误信息: REGDB_E_CLASSNOTREG(0x80040154)。
   --- 内部异常堆栈跟踪的结尾 ---
   at XXX.DataAccess.DBO.GetDataAdapter(String sql) in D:\development\项目\XXX\源程序\XXXSolution\XXXService\DataAccess\DBO.cs:line 190
   at XXX.DataAccess.DBO.ExecuteScalar(String sql) in D:\development\项目\XXX\源程序\XXXSolution\XXXService\DataAccess\DBO.cs:line 227
   at XXX.DataAccess.LoginDBO.GetUserOrgNo(String userID, String password) in D:\development\项目\XXX\源程序\XXXSolution\XXXService\Login\LoginDBO.cs:line 32
   at XXX.Business.BusinessObject.LoginBO.GetUserOrgNo(String userID, String password) in D:\development\项目\XXX\源程序\XXXSolution\XXXService\Login\LoginBO.cs:line 25
   at XXX.Business.WebService.LoginWS.GetUserOrgNo(String userID, String password) in c:\inetpub\wwwroot\XXXWebService\LoginWS.asmx.cs:line 60
在网上找到一篇解决The 'OraOLEDB.Oracle.1' provider is not registered on the local machine的文章解决了这个问题,原文请参考:
http://www.cnblogs.com/tongzhenhua/archive/2004/06/18/16714.html

解决方法如下:
到ORACLE_HOME目录,如c:\Oracle\Ora92
点击鼠标右键->属性->安全,
对ASP.NET 帐户赋予允许读、执行权限,并在“高级”中保证该目录的子目录、文件都继承这些属性,确定。

重新注册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.如果以上都没有解决问题。可以考虑是不是注册表里的注册真的丢失了。(可能性比较小,windows还是比较安全的)
regsvr32 ..\ORACLE_HOME\bin\OraOLEDB.dll
再不行可以重装一下客户端试试。

3

使用OLEDB方式连接Oracle数据库,使用Provider=MSDAORA.1;可正常使用,改成 Provider=OraOLEDB.Oracle;报错,显示说:未在本地计算机上注册"OraOLEDB.Oracle"提供程序(The 'OraOLEDB.Oracle' provider is not registered on the local machine.).

查了一下,发现是装Oracle 9i client的时候,默认没有安装Oracle 的OLEDB驱动,到上搜索oracle provider for oledb download, 查到 ,我用的oracle是9.2的版本,下载这个版本的驱动,安装之后,OraOLEDB.Oracle驱动就可以用了。(同时要保证aspnet用户对oracle home目录有完全控制权限)

4

解决方法:

 

1、打开安装目录Oracle\ora92的属性 -> 安全选项,选Authenticated Users,将Read and Execute 的属性取消,然后又选择,确定后重新启动机器;

2、打开Oracle\ora92\bin的属性 -> 共享选项,在网络上共享这个文件夹

阅读(8470) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~