SQL Server 链接Oracle 数据库实战
ccwgpt 2024-11-24 12:45 34 浏览 0 评论
概述
在某些情况下,我们希望从外部数据库中获取数据,而无需在应用程序中进行额外编码,只需编写一个 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)的网络层的方法,最后介绍了链接服务器的测试及查询目标数据库实例的方法。
相关推荐
- NET版本众多,傻傻分不清楚
-
面对.NET众多的版本,尤其还有几个名称的情况下,相信很多初学C#的开发人员都很困惑,搞不清究竟该怎么选择。下面就列举一下.NET的主要版本及其区别:.NETFramework(传统版本,仅适用于W...
- .NET Framework 和 .NET Core 有啥区别?如何选择?
-
.NETFramework和.NETCore都是由Microsoft开发的软件框架,用于创建Windows应用程序和Web应用程序。它们的主要区别在于:支持的操作系统:.NET...
- 「分享」介绍一款倍受欢迎的.NET 开源UI库
-
概述今天要带大家了解的是一款WPF的开源控件库MahApps.Metro。MahApps.Metro是用于创建现代WPF应用程序的工具包,它许多开箱即用的好东西。目前支持的NETFramework...
- .NET 5.0正式版发布:应用可在ARM64上原生运行
-
更多:o梵蒂冈图书馆频繁遭黑客攻击oNPM包被发现窃取敏感的Discord和浏览器文件o作者:硬核老王o(本文字数:712,阅读时长大约:1分钟).NET5.0正式版发布:应用可...
- 盘点8个热门.Net开源项目
-
一、SmartFormat:轻量级文本模板库,轻松替代string.Format项目地址:https://github.com/axuno/SmartFormatSmartFormat不仅继承了s...
- .NET与Java开发:一场从框架到应用实例的深度对决
-
在软件开发这片广袤的战场上,.NET与Java两大开发平台如同两位身经百战的将军,各自率领着庞大的开发者队伍,在不同的应用场景中大放异彩。今天,我们就来一场从框架到应用实例的深度对决,看看这两大平台究...
- TouchSocket:一个功能强大且易于使用的 .NET 网络通信框架
-
项目介绍TouchSocket是一个功能强大且易于使用的.NET网络通信框架,适用于C#、VB.Net和F#等语言。它提供了多种通信模块,包括TCP、UDP、SSL、WebSocket、Mo...
- 远离报错烦恼!深入全面掌握.NET Framework
-
由于Windows系统对.NETFramework这一系统组件有着极为特殊的要求,而部分应用软件及游戏对其的依赖性也近乎达到了驱动级的水准,使用或安装不当会遭遇许多“未知”的问题,因此如何掌握.NE...
- 想自己搭建.Net Web框架,开源项目太庞大看不懂,可以看这个教程
-
大家好,我是编程乐趣。一直以来,我都在运营知识星球,这个月也开始全职专心编写教程了。当时编写教程,就是发现很多程序员工作多年了,都没自己搭建过框架,也没接触过公司的框架底层代码。这就导致一些问题,无法...
- .NET 8 + React 18 一体化开发框架!苏州码农十年匠心打磨
-
开篇前言从2014年入行至今,从WebForms到MVC,从JavaScript到React/Vue,从.NETFramework到.NETCore/8,技术栈的变迁伴随了我整个职业生涯。去年,我...
- .Net Framework详解
-
相信有不少小伙伴遇到过这种情况:安装软件时提示.NetFramework未安装导致软件无法打开,或者需要安装.NetFramework4.0以上的组件。那.NetFramework是什么呢?....
- 系统小技巧:深入全面掌握.NET Framework
-
由于Windows系统对.NETFramework这一系统组件有着极为特殊的要求,而部分应用软件及游戏对其的依赖性也近乎达到了驱动级的水准,使用或安装不当会遭遇许多“未知”的问题,因此如何掌握.NE...
- 前端架构师成长之路:如何在 Vue 的计算属性中传递参数
-
在Vue中,计算属性(computed)是从其他响应式属性派生的属性,是用于自动监听响应式属性的变化,从而动态计算返回值。计算属性(computed)通常是一个没有参数的函数。当然如果需要像调...
- Vue2 vs Vue3:核心差异与升级指南
-
Vue3自2020年发布以来,凭借其革命性的改进迅速成为开发者关注的焦点。本文将从架构设计、API模式、性能优化等多个维度深入对比Vue2和Vue3的核心差异,并提供代码示例帮助开发者...
- 突发!Vue3 投屏神器引爆程序员朋友圈
-
【AlarmLevel】重要【AlarmTitle】突发!Vue3投屏神器引爆程序员朋友圈【AlarmOverview】最近GitHub上名为vue-screen-share的仓库突...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 若依框架 (41)
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- scrapy框架 (52)
- beego框架 (42)
- java框架spring (43)
- grpc框架 (55)
- 前端框架bootstrap (42)
- orm框架有哪些 (43)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle v (42)
- oracle字符串长度 (48)
- oracle提交事务 (47)