好不容易使用plsql可以成功连上数据库了,应用程序连接数据库却出现了问题
其实解决这个问题也简单:
1. 查看oracle安装目录下的BIN目录,E:appAdministratorproduct11.1.0db_1BIN
发现有OraOLEDB11.dll这个文件
解决方法:
注册OraOLEDB11.dll
注册方法:
regsvr32 OraOLEDB11.dll
发现问题依旧
Provider=OraOLEDB.Oracle.1 未找到提供程序.该程序可能未正确安装.
2.
在命令提示符下,键入 cd %systemroot%:Program FilesCommon FilesSystemOle。
在命令提示符下,键入 regsvr32 sqloledb.dll, regsvr32 oledb32.dll
这下应用程序连接数据库就成功。
我怀疑这个问题的根本原因还是在于sqloledb.dll, oledb32.dll 这两个dll没有注册导致的。
3. 对于64位数据库需要配置32位客户端的PATH环境变量:
System.Data.OracleClient所指向的是PATH环境变量下的oci.dll。因此,我们只要让程序能够找到64位的oci.dll就可以了。方法如下:
1. 下载instantclient-basic-win-x86-64-11.1.0.7.0.zip,并解压,如C:instantclient-basic-win-x86-64-11.1instantclient_11_1(这个部分也是必须的,根据实际情况的不同进行修改)。
2. 在系统的环境变量PATH中加入以上路径。
之后重启操作系统(这个是必须的,我弄了一下午没有搞好,结果重启一下马上就好了),程序会依照PATH路径寻找oci.dll,如果遇到32位的oci.dll会自动略过,找到64位的oci.dll就能连接上数据库了。
4.
IIS服务器报错:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。
出错的原因:
1.虽然报的是需要安装客户端8.1.7及以上版本,实际是.net账户没有访问Oraclein文件夹的权限
2.在 Windows Server 2003/2008 的 NTFS系统中提供了高级的访问安全性,FAT32系统也许没有这个问题。
解决办法如下:
我用Windows Server 2008 为例 Windows Server 2003 是一样的
1.打开安装有Oracle客户端的电脑,在安装目录 C:oracleora90BIN 文件夹上右键-》安全选项卡-》点击 编辑---》添加。
2.点击“查找范围”,在下面显示的账户中选择“NTWORK SERVICE” ----将“读取和执行”的权限都赋给他(如果不行就把完全控制给他,这样不安全),子文件夹继承此权限,确定。
3.打开“服务器管理器”-》配置-》 本地用户和组-》组-》adminisgrators-》将Network Service 添加进来
4.重新启动IIS,在“运行”中输入“IISRESET”。
还有一种情况就是:
IIS设置为64位模式下运行,改为32位模式这个问题就解决了
应用程序池 -> 高级设置 ->启用32位应用程序 = TRUE