64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录

64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录

经过几天不停的网上找资料,实验,终于联通了。

环境:系统:win 2008 ,SqlServer2008 R2, 连接Oracle10g

在SqlServer2008 R2机器上需要安装Oracle客户端32位和64位两个,然后配置连接别名。设置注册表。详细情况见下面

1.错误1

------------------------------------------------

64位机器上建立OLE_DB链接报错

报错内容为:    '因为ole_db访问的'MSDAORA'配置为在单线程单元模式下运行,所以访问的接口无法用于分布式查询'

经调查后,发给客户如下建议解决方式:

-------------------------------------------------------------------
原因:在64位的SQL Engine中已经不提供MSDAORA  的驱动了,可以使用OraOLEDB.Oracle,安装oracle 64位客户端即可。

建议方案:
方案一:SQLServer这边安装64位的oracle 11g r2客户端

2.错误2:

错误信息:

消息 7302,级别 16,状态 1,过程 NC_ProcSimOutGeneral,第 18 行

无法创建链接服务器 "NC" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例。

解决方法:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers\OraOLEDB.Oracle.1]
"AllowInProcess"=dword:00000001
如果Providers下面没有OraOLEDB.Oracle则新建

 
3.错误3
错误信息:"OraOLEDB.Oracle" 返回了消息 "ORA-12154: TNS: 无法解析指定的连接标识符
 
链接服务器"NC"的 OLE DB 访问接口 "OraOLEDB.Oracle" 返回了消息 "ORA-12154: TNS: 无法解析指定的连接标识符"。
消息 7303,级别 16,状态 1,第 2 行
无法初始化链接服务器 "NC" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的数据源对象。
 
解决方法:这种情况一般是不能识别64位客户端的连接别名,所以需要安装oracle client 32位客户端。
下载地址:
 
还需要设置注册表

找到注册表项HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTCMTxOCI

OracleOciLib值改为oci.dll、

OracleSqlLib值改为orasql11.dll、

OracleXaLib值改为oraclient11.dll。

方案二:下载最新的驱动
下载一个ACE.Oledb.12.0 for X64位的驱动并把连接字符串MSDAORA 更改为 Microsoft.ACE.OLEDB.12.0

ACE.Oledb.12.0 for X64位的驱动微软官方下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=13255

注:查看远程连接的provider的访问接口的方法,查看-》对象资源管理器-》服务器对象-》连接服务器-》访问接口

上一篇:Python成长之路第二篇(2)_列表元组内置函数用法


下一篇:c#访问Oracle问题及解决方法