概述在某些情况下,我们希望在应用程序中无需额外编码的情况下从外部数据库获取数据,只需编写一个T-SQL查询,它就会为我们完成所有工作。这就是微软提供“链接服务器”功能的原因。但默认情况下,链接服务器无法连接到Oracle数据库。在本文中,我们将展示如何安装必要的库和工具,然后我们将配置Oracle数据库的网络层(称为OracleNet),最终能够创建链接服务器并查询目标数据库实例。安装Oracle数据库客户端首先,停止SQLServer实例。如果实例正在运行,安装不会失败,但第一次调用LinkedServerProvider时,实例会挂起,没有响应!在本文中,我想连接到一个OracleDatabase11g实例。所以我打算安装OracleDatabase11g客户端,但您也可以尝试安装最新版本。源文件可以从Oracle的网站上下载。它采用ZIP文件的形式。下载解压后打开解压后的文件夹。完成后,只需单击“setup.exe”。这将打开以下对话框。选择?自定义?。选择适合您使用的语言。然后选择安装的目标文件夹。我个人更喜欢将它与OS分区分开,并且我遵循Oracle中的正常路径。现在让我们选择合适的组件。选择数据库实用程序、SQL*Plus和Oracle调用接口,以防因任何原因添加外部开发。它们可能没有用。OracleNet是Oracle数据库的网络层。这将允许我们在名为tnsnames.ora的文件中配置“路由”以选择OracleODBC驱动程序、OracleProviderforOLEDB和OracleProviderfor.NET以允许SQLServer通过不同方式联系Oracle数据库。单击“下一步”按钮,您将看到如下界面:单击“完成”并开始安装……我们完成了。让我们连接到SQLServer实例并检查它是否看到新安装的提供程序:配置OracleNet(添加对目标Oracle实例的引用)配置文件的位置由于我们在I:\app\oracle中安装了Oracle软件,因此网络配置文件将位于I:\app\oracle\product\11.2.0\client_1\network\admin。编辑OracleNet(sqlnet.ora)的配置我们将使用它来首先确定名称解析方法的优先级,定义默认域和时间间隔以验证连接是否仍然存在。为此,将以下行添加到sqlnet.ora文件中。NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)NAMES.DEFAULT_DOMAIN=LOCALDOMSQLNET.EXPIRE_TIME=30重要说明定义NAMES.DEFAULT_DOMAIN时,您将始终必须使用完全限定的TNS名称。如果您对使用它不感兴趣,可以将其删除Editthelocallistusedinnameresolution(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并运行以下命令:tnspingTESTSRV您将收到类似于以下内容的文本:CreatealinkedservertoanOracledatabaseinstance使用SSMS创建链接服务器的最方便的方法肯定是通过SQLServer管理工作室。为此,连接到您的SQLServer实例并找到?ServerObjects?,单击一下,您将找到?LinkedServers?。如果您右键单击它,您将能够创建一个新的链接服务器。连接信息提供如下。作为数据源,您将使用tnsnames.ora文件中使用的名称(带或不带域名)。在配置的安全部分,根据您的环境配置,您将选择适当的方法用于远程身份验证。您还可以查看链接服务器设置以针对您的环境进行调整。单击“确定”后,将创建链接服务器并将其添加到“链接服务器”列表中,如下所示。我们可以测试链接服务器。为此,请右键单击它并选择“测试连接”。如果一切都已配置,您将看到以下对话框:您还可以通过查看树视图来查询表和视图:最后,您可以运行以下查询:SELECT*FROMOPENQUERY([DBLNK_TEST],'selectsysdatefromdual');小结本文首先介绍了ORACLE客户端的安装过程,然后介绍了Oracle数据库(简称OracleNet)网络层的配置方法,最后介绍了测试链接服务器和查询目标数据库实例的方法。
