当我们同时使用SQL Server和Oracle来存储数据时,经常会用到跨库查询。为了方便使用跨库查询,一个最好的办法就是通过创建链接服务器来实现。既可以在SQL Server中创建Oracle的链接服务器,也可以在Oracle中创建SQL Server的链接服务器。本文主要讲述如何在SQL Server中创建Oracle的链接服务器,可以通过图形界面和命令两种方式来创建。
标签:
当我们同时使用SQL Server和Oracle来存储数据时,经常会用到跨库查询。为了方便使用跨库查询,一个最好的办法就是通过创建链接服务器来实现。既可以在SQL Server中创建Oracle的链接服务器,也可以在Oracle中创建SQL Server的链接服务器。本文主要讲述如何在SQL Server中创建Oracle的链接服务器,可以通过图形界面和命令两种方式来创建。
Microsoft Windows Server 2003 R2 Enterprise x64 Edition Service Pack2
Microsoft SQL Server 2005 Standard Edition x64
Oracle Provider for OLE DB
如果用32位win2003操作系统,会有系统自带的Microsoft OLE DB Provider for Oracle驱动,因此不需要做额外的准备工作,但如果使用的是64位系统,那么这个驱动是没有的,并且微软也不提供这个驱动的64位版本,因此,此时只能使用Oracle提供的Oracle Provider for OLE DB这个驱动。
那么如何安装这个驱动呢?安装一个完整的Oracle11gR2程序也是一个有效的方法,但这个64位版本的安装包有2个多G,相当庞大,如果仅仅是为了建立链接服务器,完全没必要装这么个庞然大物。其实我们只需要到Oracle官网上下载ODAC压缩包即可。
至于如何安装ODAC,不是本文的重点,大家可以百度搜索我的另一篇文章——《Oracle数据访问组件ODAC的安装方法》。
打开Microsoft SQL Server Management Studio并以sa身份登录,在左侧的“对象资源管理器”窗口中展开“服务器对象”节点,在其下的“链接服务器”节点上右键选择“新建链接服务器...”,如图
在弹出的“新建链接服务器”对话框中,按照图示填写,具体填写项目说明如下:
* 链接服务器:这是链接服务器的别名,名字可以由你自己随意决定
* 服务器类型选择“其他数据源”
* 访问接口:一定要选择“Oracle Provider for OLE DB”。如果是32位系统,还可以选择“Microsoft OLE DB Provider for Oracle”,但64位系统就只能选择前者
* 产品名称:一定是“Oracle”,这是固定写法,只要是链接Oracle数据库,都得这么写
* 数据源:是你要链接的Oracle数据库的库名。在我的Oracle数据库软件里,建立了一个名为ora的数据库,我想链接到这个名为ora的数据库,所以我这里的“数据源”填的就是“ora”,大家可以根据自己的实际情况来填写。
填好以后不要急着去点击“确定”按钮。
再点击左侧“选项页”里的“安全性”,右边选择最下面的“使用此安全上下文建立连接”,然后在下面输入连接到ora(根据自己的实际情况来更改)数据库的用户名和密码。再点击“确认”按钮,至此,一个明文ORA_TEST的链接服务器就建好了。
把下面两条命令语句补全,然后在SQL Server中执行即可创建成功:
EXEC master.dbo.sp_addlinkedserver @server = N‘别名‘, @srvproduct=N‘库名‘,@provider=N‘MSDAORA‘, @datasrc=N‘TNS名‘
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N‘别名‘, @locallogin = NULL ,@useself = N‘False‘, @rmtuser = N‘模式名‘, @rmtpassword = N‘密码‘
在测试查询Oracle数据库时,有可能会遇到无法创建“OraOLEDB.Oracle”的实例的错误。这个问题可以在百度经验里搜索我的另一篇文章——《无法创建“OraOLEDB.Oracle”的实例的解决办法》。
本文的成功是建立在Oracle数据库驱动的成功安装和tnsnames.ora文件的正确配置的基础之上的,对这一点如果有疑惑,大家可以百度搜索我的另一篇文章——《Oracle数据访问组件ODAC的安装方法》。
在测试查询Oracle数据库时,有可能会遇到无法创建“OraOLEDB.Oracle”的实例的错误。这个问题可以在百度经验里搜索我的另一篇文章——《无法创建“OraOLEDB.Oracle”的实例的解决办法》。
标签:
原文地址:http://www.cnblogs.com/wayne-ivan/p/4691092.html