64位SqlServer通过链接服务器与32位oracle通讯

在SQL SERVER里只安装了32位的oracle客户端的情况下,添加链接服务器然后执行查询会报如下信息:

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

1、下载客户端win64_11gR2_client.zip和win32_11gR2_client.zip

http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_client.zip

http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_client.zip

2、安装上面两个客户端

安装32位客户端到 C:Oracleproduct11.2.0client_32
安装32位客户端到 C:Oracleproduct11.2.0client_64

然后在各自目录下找到networkadmin,修改tnanames.ora,添加oracle连接,两个客户端都加如下:

sap_mid= 

(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 10.203.22.26)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SID = sapmid)
(SERVER = DEDICATED)
)
)

可用tnsping sap_mid测试一下:

返回结果如下,表示成功了

C:Userseiptest>tnsping sap_mid

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 20-11月-
2013 10:31:23

Copyright (c) 1997, 2010, Oracle. All rights reserved.

已使用的参数文件:
c:oracleproductproduct11.2.0client_2 etworkadminsqlnet.ora


已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.2
03.22.26) (PORT = 1521))) (CONNECT_DATA = (SID = sapmid) (SERVER = DEDICATED)))
OK (30 毫秒)

3、修改注册表HKEY_LOCAL_MACHINE SOFTWARE Microsoft MSDTC MTxOCI和

HKEY_LOCAL_MACHINE SOFTWARE Wow6432Node Microsoft MSDTC MTxOCI 

OracleOciLib改为oci.dll, OracleSqlLib改为orasql11.dll, OracleXaLib改为oraclient11.dll

4、添加odbc数据源

5、设置访问接口

点击服务器对象,链接服务器-》访问接口-》OraOLEDB.Oracle,点属性把所有选项都勾上

6、添加链接服务器

链接服务器名自己取,访问接口为Microsoft OLE DB Provider for ODBC Drivers,产品名为oracle,数据源为刚刚建的ODBC数据源名

然后点左侧的安全性,在右侧点使用此安全上下文建立连接,输入oracle的帐号和密码

6、测试

SELECT * FROM openquery(SAP,'SELECT * FROM SAPMID.ZIF_MAKT')

SAP为刚刚建立的链接服务器名,如无意外,会显示查询结果

以下为对考链接

http://yours369000.blog.163.com/blog/static/4762337720132247117744/

http://www.codeweblog.com/sql-server-2008-r2-x64-connect-to-oracle-solutions/

http://www.cnblogs.com/StupidsCat/archive/2012/06/12/2546307.html

原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/3433020.html