SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle

离线安装 .NET Framework 3.5
方法一:使用 NetFx3.cab 文件
下载 NetFx3.cab 文件,并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。
以管理员身份运行命令提示符,输入以下命令并回车:

dism /online /Enable-Feature /FeatureName:NetFx3 /Source:"%windir%" /LimitAccess

等待部署进度达到 100%,无报错即可。
在“程序和功能”-“Windows 功能”中查看,确认 .NET Framework 3.5 选项已被勾选。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、测试环境说明

操作系统:Windows 7 64bit ;Windows Server 2008 R2 64bit

数据库版本:SQL Server 2008 R2 64 位 和 Oracle Database 11g 第 2 版 (11.2.0.1.0)

及相应的客户端版本:Oracle 11g client 64 位。

二、创建 SQL Server 链接服务

首先 SQL Server 链接 Oracle 可以通过两个访问接口: “ MSDAORA ” 和“OraOLEDB.Oracle”。

默认状态下,SQL Server 2008 R2 64 位安装后在 服务器对象 -> 链接服务器 -> 访问接口下并没有 “OraOLEDB.Oracle”接口。

注意:在安装之前记得关闭杀毒软件:例如火绒,不然会出现:Oracle安装出现CreateFile() error 32 when trying set file time 错误

第一步:安装服务器版本 Oracle Database 11g参考文章

第二步:安装“OraOLEDB.Oracle”访问接口需要下载 Oracle 11g client 64 位。具体安装过程如下:

1)下载后解压 zip 文件到文件夹,点击setup.exe,弹出如下界面:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接点击完成,开始安装客户端程序。

3)配置注册表

打开运行,输入 regedit ,按回车。

在这里插入图片描述

找到注册表项 HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTCMTxOCI

OracleOciLib 值改为 oci.dll、
OracleSqlLib 值改为 orasql11.dll、
OracleXaLib 值改为 oraclient11.dll。

在这里插入图片描述

HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftMSDTCMTxOCI 对它做同样的修改。
4)配置完成后重新启动计算机,继续配置

在开始 -> 所有程序 -> Oracle - OraClient11g_home1 -> 配置和移植工具 下找到 Net Manager 点击打开,弹出如下窗口:

在这里插入图片描述

点击服务命名,选择 编辑 –> 创建 弹出网络服务名向导:

在这里插入图片描述

在网络服务名中输入要连接的 Oracle 实例名。点击下一步:

在这里插入图片描述

默认选择[TCP/IP(Internet 协议)] 点击下一步:

在这里插入图片描述

输入要连接的主机名,端口号为 1521 ,Oracle 的默认端口,点击下一步:

在这里插入图片描述

输入服务名,点击下一步:
在这里插入图片描述

点击测试中的[测试]按钮,进行服务器连接测试 ,注意要输入正确的用户名和密码, 可以直接点击完成跳过测试步骤。
注意:配置好net manager之后一定要关闭窗口进行保存,不然sqlserver链接服务器Oracle的时候会一直链接失败

1、 “OraOLEDB.Oracle” 访问接口是由 Oracle 的 Oracle Provider for OLE DB 驱动提供的。它解决了两个数据库类型不一致的问题。而且如果需要使用分布式事务,必须使用它来创建链接服务器。
在创建之前,在 SQL Server 中,链接服务器->访问接口->OraOLEDB.Oracle->右键属性,
选中“允许进程内”。

这一步是使我们选择的 OraOLEDB.Oracle 接口打开执行操作。如未设置会报如下错误:

“无法初始化链接服务器 “null” 的 OLE DB 访问接口 “OraOLEDB.Oracle” 的数据源对象"

在这里插入图片描述
在这里插入图片描述

或者使用 Oracle Provider for OLE DB 驱动创建 sqlserver 链接服务器的代码:

--建立数据库链接服务器 EXEC Sp_addlinkedserver
@server =N'ORCL',--要创建的链接服务器别名@srvproduct=N'Oracle',--产品名称@provider=N'OraOLEDB.Oracle',-- OLE DB 驱动名称@datasrc=N'ORCL' --数据源
Oracle->ora11g->network->admin->tnsnames.ora查看EXEC Sp_addlinkedsrvlogin 'ORACLEDB',--已建立的链接服务器名'false',-- 固定*/
NULL,--为每个登陆SQL SERVER的用户使用此链接服务器,则写用户名*/
'YNMZDXWC',--帐号(Oracle) '1' --密码
EXEC Sp_serveroption 'ORACLEDB',
'rpc out', 'true'EXEC Sp_serveroption'ORACLEDB',
'rpc', 'true'--这两个是打开 rpc,rpc out 的,默认为 False,打开后可以支持远程更改分布式事务。(如有分布式事务操作必须要设置)

这样我们就建好了链接服务器,已经可以通过它对Oracle 数据库进行查询。
在这里插入图片描述

三、链接服务器的查询

查询的两种方式:

1)链接服务器别名…Oracle 名.oracle 表,注意使用大写;

SELECT *FROM OPENQUERY(ZHANG,'SELECT *FROM ELE_DEPARTMENT') SELECT * FROM [ORACLEDB]..[SCOTT].[EMP]

这种方式可以进行操作,优点是使用简单,一目了然,而缺点是性能太差,查询大数据量表很慢。效率太差。

2)使用 OPENQUERY;

对给定的链接服务器执行指定的传递查询。该服务器是 OLE DB 数据源。OPENQUERY 可以在查询的 FROM 子句中引用,就象它是一个表名。OPENQUERY 也可以作为 INSERT、UPDATE 或 DELETE 语句的目标表进行引用。但这要取决于 OLE DB 访问接口的功能。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。示例:
A.执行 SELECT 传递查询

SELECT *
FROM OPENQUERY(ORACLEDB, 'SELECT * FROM SCOTT.EMP') SELECT *
FROM OPENQUERY(ZHANG,'SELECT *FROM ELE_DEPARTMENT')

B.执行 UPDATE 传递查询

UPDATE OPENQUERY (ORACLEDB, 'SELECT ENAME FROM SCOTT.EMP WHERE EMPNO = 7369')
SET ENAME = 'SMITH';

C.执行 INSERT 传递查询

INSERT OPENQUERY (ORACLEDB, 'SELECT * FROM SCOTT.EMP') VALUES (8888,'JIAO','MANAGER',NULL,'1990-12-17 00:00:00.0000000',5000.00,5000.00,10);

D.执行 DELETE 传递查询

DELETE OPENQUERY (ORACLEDB, 'SELECT ENAME FROM SCOTT.EMP WHERE EMPNO = 8888');

查询方式速度几乎和在 Oralce 中一样快。并且我们可以将 openquery() 当做表来用。

四、SQL Server 链接服务器实现分布式查询

启用条件:

1、 必须安装 Oracle Services for Microsoft Transaction Server;

2、 必须用Oracle Provider for OLE DB 驱动提供的OraOLEDB.Oracle 访问接口来创建链接服务;

3、 必须双方启动并配置 MSDTC 服务,关于 MSDTC 服务的配置请参考:SQLServer 分布式事务配置.doc。
示例:

SET XACT_ABORT ON BEGIN TRANUPDATE Openquery(ORACLEDB, 'SELECT * FROM EMP WHERE EMPNO = 7369') SET	COMM = 200
INSERT test_yiyanhua.dbo.EMP SELECT *
FROM	test_yiyanhua.dbo.EMP WHERE	EMPNO = 7499
IF @@ERROR <> 0 ROLLBACK TRAN
ELSE
COMMIT TRAN

五、彻底卸载Oracle 11g服务端

彻底卸载Oracle 11g服务端

六、相关Oracle软件安装包下载地址

相关Oracle软件安装包下载地址
提取码:sZZA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/499069.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于easy-es对时间范围查询遇到的小bug

前言&#xff1a;在使用easy-es之前作为一个小白的我只有es原生查询的基础&#xff0c;在自己通过查看官方文档自学easy-es遇到了一个挫折&#xff0c;其他的还好语法和MybatisPlus差不多&#xff0c;正以为我觉得很快就能入手&#xff0c;在对时间范围的判断就给我当头一棒&am…

typora+picgo core+minio自动上传图片

1. 在服务器上安装docker版本minio 创建/docker/minio文件夹 mkdir -p /docker/minio在此文件夹创建docker-compose.yml version: "3.5" services:minio:image: quay.io/minio/minio:latestcontainer_name: minioprivileged: truerestart: alwaysports:# API接口访…

WebRTC线程的启动与运行

WebRTC线程运行的基本逻辑&#xff1a; while(true) {…Get(&msg, …);…Dispatch(&msg);… }Dispatch(Message *pmsg) {…pmsg->handler->OnMessage(pmsg);… }在执行函数内部&#xff0c;就是一个while死循环&#xff0c;只做两件事&#xff0c;从队列里Get取…

【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析

文章目录 前言一、前提条件二、操作步骤2.1 准备云主机实例2.2 安装docker-compose2.3 使用docker-compose安装Superset2.3.1 克隆 Superset 的 GitHub 存储库2.3.2 通过 Docker Compose 启动 Superset 2.4 开通 OB Cloud 云数据库2.5 获取连接串2.6 使用 Superset 连接 OceanB…

我们能否使用 ANSYS SPEOS 测量水质?

介绍 Ansys SPEOS 是动态环境科学领域的尖端工具&#xff0c;可为围绕水质管理的复杂问题提供深入的见解和创新解决方案。通过其光学系统功能&#xff0c;它为理解和改善不同环境的生态动态提供了一个强大的框架。 主要特点和优势 多材质建模&#xff1a; 为了准确模拟环境…

简易屏幕共享工具-基于WebSocket

前面写了两个简单的屏幕共享工具&#xff0c;不过那只是为了验证通过截屏的方式是否可行&#xff0c;因为通常手动截屏的频率很低&#xff0c;而对于视频来说它的帧率要求就很高了&#xff0c;至少要一秒30帧率左右。所以&#xff0c;经过实际的截屏工具验证&#xff0c;我了解…

论文分享 | PromptFuzz:用于模糊测试驱动程序生成的提示模糊测试

大语言模型拥有的强大能力可以用来辅助多种工作&#xff0c;但如何有效的辅助仍然需要人的精巧设计。分享一篇发表于2024年CCS会议的论文PromptFuzz&#xff0c;它利用模型提示生成模糊测试驱动代码&#xff0c;并将代码片段嵌入到LLVM框架中执行模糊测试。 论文摘要 制作高质…

2024年底关于期货的工作总结

十几年程序猿出身&#xff0c;因几年前的懵懂无畏闯入期货市场&#xff0c;盈了&#xff0c;感觉期货太简单&#xff0c;飘然裸辞&#xff0c;想当财务自由者&#xff0c;全职做交易。当深入学习时&#xff0c;却亏了&#xff0c;原来市场是让人敬畏的&#xff0c;也是反人性的…

mybatis 和 mybatisPlus 兼容性问题

项目采用的是 mybatis&#xff0c; 后续引入了 mybatisPlus&#xff0c;用 mybatisX 创建的四个类一直报错&#xff0c;提示找不到符号&#xff0c;意识到 mybatis 和 mybatisPlus 的兼容性问题&#xff0c;通过修改配置 两者的配置如下 #配置mybatis配置 mybatis:type-aliase…

使用maven-mvnd替换maven大大提升编译打包速度

先上结论&#xff01;&#xff01;&#xff01; 多模块清理并打包提升&#xff1a;约3.5倍 多模块不清理打包提升&#xff1a;约5.5倍 单模块提升&#xff1a;约2倍 从计算结果来看&#xff0c;多模块提升的效率更高。在使用mvnd package打包多模块式&#xff0c;可在控制台…

【数据结构】(Python)差分数组。差分数组与树状数组结合

差分数组&#xff1a; 基于原数组构造的辅助数组。用于区间修改、单点查询。区间修改的时间复杂度O(1)。单点查询的时间复杂度O(n)。差分数组的元素&#xff1a;第一个元素等于原数组第一个元素&#xff0c;从第二个元素开始是原数组对应下标的元素与前一个元素的差&#xff0…

k8s-1.28.2 部署prometheus

一、prometheus helm仓库 ## 网站地址 # https://artifacthub.io/## prometheus 地址 # https://artifacthub.io/packages/helm/prometheus-community/prometheus. # helm repo add prometheus-community https://prometheus-community.github.io/helm-charts # helm repo …

vulhub-wordpress靶场

一.主题上传漏洞 来到靶场点击主题选择add new 这里有一个上传主题的地方 我们可以去网上找到wordpress主题下载一个 wordpress模板 网页设计模板 免费 免费下载 - 爱给网 下载完成后对我们有用的东西只有这一个目录&#xff0c;把它拖出来 点开moban目录后&#xff0c;创建…

深入浅出梯度下降与反向传播

文章目录 1. 前言2. 基本概念2.1 一元函数的导数2.2 偏导数2.3 方向导数2.4 梯度2.5 均方误差 3. 梯度下降3.1 梯度下降的公式3.2 梯度下降的类型&#xff08;优化器&#xff09; 4. 反向传播4.1 反向传播的基本步骤4.2 反向传播的数学推导 5. 实战5.1 手动求导5.2 自动求导5.3…

gitlab-runner的卸载与安装

如果你使用rpm方式安装gitlab-runner&#xff0c;则可以参考本教程。 卸载 停止和卸载gitlab-runner 停止 gitlab-runner stopchkconfig gitlab-runner off卸载 gitlab-runner uninstall删除rpm包 查询出rpm包名&#xff0c;根据包名删除rpm。 [rootEuler02 ~]# rpm -qa …

2024年12月31日Github流行趋势

项目名称&#xff1a;free-programming-books 项目地址url&#xff1a;https://github.com/EbookFoundation/free-programming-books项目语言&#xff1a;HTML历史star数&#xff1a;344575今日star数&#xff1a;432项目维护者&#xff1a;vhf, eshellman, davorpa, MHM5000, …

基于深度学习的视觉检测小项目(二) 环境和框架搭建

一、环境和框架要求 SAM的环境要求&#xff1a; Python>3.7 PyTorch>1.7 torchvision>0.8 YOLO V8的环境要求&#xff1a;YOLO集成在ultralytics库中&#xff0c;ultralytics库的环境要求&#xff1a; Python>3.7 PyTorch>1.10.0 1、确定pytorch版本…

深度学习——损失函数汇总

1. 连续值损失函数 总结:主要使用胡贝儿损失函数,应用于连续数值的预测之间的误差损失,参考地址 import torch import torch.nn as nna = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) b = torch.tensor([[3, 5], [8, 6]], dtype=torch.float)loss_fn1 = torch.nn.M…

【分布式数据库与数据存储方案】详解

分布式数据库与数据存储方案 一、分布式数据库概述 &#xff08;一&#xff09;概念 分布式数据库是一种将数据分散存储在多个物理节点上的数据库系统&#xff0c;这些节点通过网络进行连接和通信&#xff0c;对外呈现出一个统一的逻辑数据库&#xff0c;用户或应用程序可以像…

TB1801D 线性驱动 LED 恒流芯片

1、产品概述 TB1801D是一款专为12V灯珠设计的汽车灯专用的低压差恒流芯片&#xff0c;输出电流恒流精度≤3&#xff05;&#xff0c;外围结构简单。TB1801D 内置 130℃过温保护电路&#xff0c;可在各种散热条件下将 LED 灯珠温度控制在 140℃以内。TB1801D 内置 100V 的功率 M…