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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的访问接口的方法,查看-》对象资源管理器-》服务器对象-》连接服务器-》访问接口

以上是关于64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008 链接 ORACLE 问题

求个SQL server 2008 64位安装包,急用急用,最好是百度云盘,拜托了

sql server2008 r2(64位) 激活密钥

windows server2012R2 64位系统中安装SQL server2008 32位最大使用内存是多少?

如何将数据从Excel电子表格导出到Sql Server 2008表

如何在windows server 2008 r2 64位操作系统下安装sql 2005 32位数据库