概述
在某些情况下,我们希望从外部数据库中获取数据,而无需在应用程序中进行额外编码,只需编写一个 T-SQL 查询即可为我们完成所有工作。这就是微软提供的[链接服务器]功能的原因。
但默认情况下,链接服务器无法连接到 Oracle 数据库。本文中我们将展示如何安装必需的库和工具,然后我们将配置 Oracle 数据库(称为 Oracle Net)的网络层,以最终能够创建链接服务器并查询目标数据库实例。
Oracle 数据库客户端的安装
首先,停止 SQL Server 实例。如果实例正在运行,安装不会失败,但是在第一次调用 Linked Server Provider 时,实例会挂起并且不会响应!本文中我想连接一个 Oracle Database 11g 实例。所以我将安装一个 Oracle Database 11g 客户端,但您也可以尝试安装最新版本。源文件可以在Oracle 的网站上下载。它采用 ZIP 文件的形式。下载解压缩并打开解压缩的文件夹。
完成后,只需点击 « setup.exe »。
这将打开以下对话框。选择«自定义»。
选择您使用的适当语言。
然后选择安装的目标文件夹。我个人更喜欢将其与操作系统分区分开,并且我遵循 Oracle 中的常规路径。
现在让我们选择适当的组件。
数据库实用程序、SQL*Plus 和 Oracle 调用接口是在出于任何原因添加外部开发的情况下选择的。它们可能没有用。 Oracle Net 是 Oracle 数据库的网络层。这将允许我们在名为 tnsnames.ora 的文件中配置[路由] 选择了Oracle ODBC Driver、Oracle Provider for OLE DB 和 Oracle Provider for .NET ,以允许 SQL Server 通过不同的方式联系 Oracle 数据库。
通过单击[下一步]按钮,您将看到以下界面:
单击[结束]并开始安装……
我们完成了。
让我们连接到 SQL Server 实例并检查它是否看到新安装的提供程序:
配置 Oracle Net(添加对目标 Oracle 实例的引用)
配置文件的位置由于我们在 I:\app\oracle 中安装了 Oracle 软件,因此网络配置文件将位于 I:\app\oracle\product\11.2.0\client_1\network\admin 中。
编辑 Oracle Net (sqlnet.ora) 的配置我们将使用它来首先确定名称解析方法的优先级,定义默认域和时间间隔以验证连接是否仍处于活动状态。
为此,请在 sqlnet.ora 文件中添加以下行。
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)NAMES.DEFAULT_DOMAIN = LOCALDOMSQLNET.EXPIRE_TIME = 30
重要的提示
定义 NAMES.DEFAULT_DOMAIN 时,您将始终必须使用完全限定的 TNS 名称。如果您对使用不感兴趣,可以将其删除
编辑名称解析中使用的本地列表 (tnsnames.ora)在配置中另一个非常重要的文件是 tnsnames.ora 文件。 此 tnsnames.ora 文件是一个配置文件,其中包含映射到本地命名方法的连接描述符的网络服务名称,或映射到侦听器协议地址的网络服务名称。
以下是用于创建链接服务器的内容示例。
TESTSRV.LOCALDOM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = TestSrv.st.chulg)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TESTSRV.LOCALDOM) ) )测试命名解析
打开 cmd.exe 并运行以下命令:
tnsping TESTSRV
您将收到类似于以下内容的文本:
创建到 Oracle 数据库实例的链接服务器
使用 SSMS创建链接服务器最方便的方法肯定是通过 SQL Server Management Studio。为此,请连接到 SQL Server 实例并找到 « Server Objects »,单击一下,您将找到 « Linked Servers »。如果您右键单击它,您将能够创建一个新的链接服务器。
如下提供连接信息。作为数据源,您将使用 tnsnames.ora 文件中使用的名称(带或不带域名)。
在配置的安全部分,根据您的环境配置,您将选择适当的方法用于远程身份验证。
您还可以查看链接服务器设置以根据您的环境进行调整。
单击[确定]后,将创建链接服务器并将其添加到[链接服务器]列表中,如下所示。
我们可以测试链接服务器。为此,请右键单击它并选择«测试连接»。
如果一切都配置好,您将看到以下对话框:
您还可以通过查看树视图查询的表和视图:
最后,您可以运行以下查询:
SELECT * FROM OPENQUERY([DBLNK_TEST] , 'select sysdate from dual') ;
小结
本文首先介绍了ORACLE客户端的安装过程,然后介绍了配置 Oracle 数据库(称为 Oracle Net)的网络层的方法,最后介绍了链接服务器的测试及查询目标数据库实例的方法。
原文地址:https://www.toutiao.com/article/7159816253933142542/
查看更多关于SQL Server 链接 Oracle 数据库实战的详细内容...