经过几天不停的网上找资料,实验,终于联通了。
环境:系统: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的访问接口的方法,查看-》对象资源管理器-》服务器对象-》连接服务器-》访问接口