以文本方式查看主题

-  昂捷论坛  (http://enjoyit.com.cn/bbs/index.asp)
--  □-技术研讨会  (http://enjoyit.com.cn/bbs/list.asp?boardid=36)
----  sql server中使用链接服务器访问oracle数据库  (http://enjoyit.com.cn/bbs/dispbbs.asp?boardid=36&id=6825)

--  作者:czg1981
--  发布时间:2010/1/25 13:53:24
--  sql server中使用链接服务器访问oracle数据库

 

一、  安装配置oracle客户端
要访问orcale数据,必须在访问的客户端机器上安装oracle客户端。

Orcale有两种形式的客户端:

l         完整的客户端

包括访问服务器端数据库的基本Oracle 的 Microsoft OLE DB 访问接口需要 Oracle Client Software Support File以及 SQL*Net 。还包括用于配置客户端设置的工具、sqlplus、企业管理器等一系列的工具。

l         立即客户端(instant client)

这个客户端体积很小,但是只包括了访问orcale服务器的最基本的支撑驱动,没有设置管理工具,也找不到可用的图形界面。对客户端的设置需要手工就行。以oracle 10g版本,以这个版本为例。

1、 下载oracle 10 的客户端

可以到orcale官方网站下载,需要先注册,然后下载,如果的服务器是64位操作系统,需要下载64位的客户端。

下载适用于Microsoft Windows (32-bit)的Oracle Database 10g Client Release 2的客户端,下载地址:http://download.oracle.com/otn/nt/oracle10g/10201/10201_client_win32.zip

下载适用于Microsoft Windows (64-bit)的Oracle Database 10g Client Release 2的客户端,下载地址:http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_client.zip

2、 安装oracle 10 客户端

下载好后,解压,安装。

安装时有四个选项:

l         Instantclient,相当于最小化安装。

l         管理员,完整安装。

l         运行时

l         自定义

为了管理方便,一般以管理员方式安装。

3、 配置oracle 10 客户端

在客户端主要需要配置两个设置,命名方法和服务器别名,还有一个监听程序是服务端需要用的,用来监听客户端的访问,客户端不必设置监听程序。

这些设置都能在net manager工具中进行,在oracle程序组中的“配置和移植工具”中的“net manager”。如图所示:


图片点击可在新窗口打开查看此主题相关图片如下:netmanager_name.jpg
图片点击可在新窗口打开查看
概要文件就是用来设置命名方法和验证方式的的

3.1.        命名方法

在窗口左面的上部下拉列表中选“命名”,左边窗口显示目前可用的方法,右边是已经选择的命名方法,几个主要的命名方法有:

l         TNSNAMES表示采用TNSNAMES.ORA文件来解析

l         ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES

l         HOSTNAME表示使用host文件,DNS,NIS等来解析

一般使用本地命名方式来解析服务器名,即使用TNSNAMES.ORA中设置的服务器名。TNSNAMES.ORA中的服务器名服务器别名中设置。

3.2.        验证方式


图片点击可在新窗口打开查看此主题相关图片如下:netmanager_aut.jpg
图片点击可在新窗口打开查看

在下拉列表中选择“orcale高级安全性”,设置用户连接Oracle服务器时使用哪种验证方式。在下面的左边窗口显示可用的验证方式,右边是已选的验证方式,主要的验证方式有:

l         NTS表示操作系统身份验证

l         NONE,什么都不选表示Oracle数据库身份验证

l         KERBEROS5,使用kerberos 5 验证方式

这些验证方式可以同时采用,一般采用Oracle数据库身份验证,即这里什么都不用设置即可,选了其他验证方式也不影响Oracle数据库身份验证。3.3.        服务器别名

上面命名方法中选择了TNSNAMES本地命名方法时,在这里设置服务器的别名。

在左边窗口选“服务命名”,就可以新增和编辑本地服务器别名。这里生成的服务器别名都反映在tnsnames.ora文件中。

本地服务器命名设置的服务器实际上设置了服务器的四个主要参数:服务器主机名(可以是主机名也可以是主机ip)、服务器端口号(默认1521)、访问协议、要访问服务器上数据库服务名。


图片点击可在新窗口打开查看此主题相关图片如下:netmanager_alias.jpg
图片点击可在新窗口打开查看
这里的exchange是客户端的服务器别名,客户端访问服务端数据库就要使用这个名称。

服务名databaseName是服务端需要访问的那个数据库的服务名。

下面就是这个服务端的ip、端口和协议(一般为TCP/IP).

 

设置服务器别名后,在tnsnames.ora文件中这样反映出来:

EXCHANGE =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.6)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = c001_db)

    )

  )

二、  Sql server中新建指向orcacle的链接服务器

上面在客户端设置了访问oracle服务器的必要设置,客户端可以通过oracle的客户端访问orcale服务端的数据库了。

这里只讨论使用sql server的链接服务器链接oracle服务器访问数据的情况。

设置如下:

l         在sql server中新建一个链接服务器,比如链接服务器名为:R2000

l         数据访问接口选择:Microsoft OLE DB Provider for Oracle,如果没有这个驱动也可以选择Oracle Provider for OLE DB。

l         产品名称:Oracle

l         数据源:就是上面步骤中建立的服务器别名,代表要访问的oracle服务器上的要访问的那个数据库。

l         在安全性中选“使用此安全上下文建立连接”,然后输入访问oracle的用户名和密码。

Ok,其他的上面没有提到的设置不需要设置。下面即可通过。

用命令行添加的方法:

1 Microsoft OLE DB Provider for Oracle驱动

sp_addlinkedserver \'R2000\',\'Oracle\',\'MSDAORA\',\'c001_db\'
go
sp_addlinkedsrvlogin \'R2000\', false, \'sa\', \'username\', \'password\'
go
sp_addlinkedsrvlogin \'R2000\', false, \'NT AUTHORITY\\SYSTEM\', \'username\', \'password\'
go
/*这个用户需要根据Server SQL用户来定,在安全性->登录名中找*/
sp_addlinkedsrvlogin \'R2000\', false, \'JMDB\\Administrator\', \'username\', \'password\'
go

2 Oracle Provider for OLE DB
sp_addlinkedserver \'R2000\',\'Oracle\',\'OraOLEDB.Oracle\',\'c001_db\'
go
sp_addlinkedsrvlogin \'R2000\', false, \'sa\', \'username\', \'password\'
go
sp_addlinkedsrvlogin \'R2000\', false, \'NT AUTHORITY\\SYSTEM\', \'username\', \'password\'
go

/*这个用户需要根据Server SQL用户来定,在安全性->登录名中找*/
sp_addlinkedsrvlogin \'R2000\', false, \'JMDB\\Administrator\', \'username\', \'password\'
go

 

配置 访问接口:

有时在装了Oracle后,驱动有了,但实际相应的访问接口没有配置,这时还是不能访问。

在 SQL 对象资源管理器->服务器对象->链接服务器->访问接口中找到你所选用的接口,右键->属性把允许进程内选上。
三、  在sql server中通过链接服务器访问orcale

由于orcale的服务名是直接指向到orcale服务器上的某一个数据库,所有通过链接服务器访问orcale的数据是这样的形式(指定数据库的位置不需要填):

服务器别名..所有者.数据库对象

R2000..username.tablename
建议用OPENQUERY 进行访问,例:SELECT *
FROM OPENQUERY(R2000, \'SELECT  * FROM username.tablename\')
GO

[此贴子已经被作者于2010-1-25 23:23:45编辑过]

--  作者:czg1981
--  发布时间:2010/1/25 23:20:23
--  
如果要通过链接服务器访问存储过程,需要打开RPC。右键链接服务器名称,如R2000,属性->服务器设置,将RPC和RPC OUT设置成True
图片点击可在新窗口打开查看此主题相关图片如下:rpc.jpg
图片点击可在新窗口打开查看

--  作者:nizao2008
--  发布时间:2010/2/11 14:25:05
--  
图片点击可在新窗口打开查看 高手啊