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.pswp.cn/web/64741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64741.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64741.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【R語言】校準曲線,繪制原理

①獲取predict的結果&#xff0c;“prob.Case”這一列就是預測風險概率&#xff0c;“truth”列為實際發生結局的分組 ②將prob.Case進行分桶&#xff08;簡單理解為分組&#xff0c;一般分10組)&#xff0c;常見的分桶方式有兩種&#xff1a;一是將prob.Case從大到小排序后&a…

QTDemo:串口調試工具

項目簡介 本項目通過QT框架設計一款可以在Windows、Linux等平臺的跨平臺串口助手&#xff0c;串口功能能夠滿足基本的調試需求。 本項目采用的版本為&#xff1a;QT5.14 visual studio 2022 進行開發。 項目源碼&#xff1a;https://github.com/say-Hai/MyCOMDemo 項目頁面&am…

基于SpringBoot和OAuth2,實現通過Github授權登錄應用

基于SpringBoot和OAuth2&#xff0c;實現通過Github授權登錄應用 文章目錄 基于SpringBoot和OAuth2&#xff0c;實現通過Github授權登錄應用0. 引言1. 創建Github應用2. 創建SpringBoot測試項目2.1 初始化項目2.2 設置配置文件信息2.3 創建Controller層2.4 創建Html頁面 3. 啟動…

CMS漏洞靶場攻略

DeDeCMS 環境搭建 傻瓜式安裝 漏洞一&#xff1a;通過文件管理器上傳WebShel 步驟?:訪問目標靶場其思路為 dedecms 后臺可以直接上傳任意文件&#xff0c;可以通過?件管理器上傳php文件獲取webshell 登陸網站后臺 步驟二&#xff1a;登陸到后臺點擊 【核心】 --》 【文件式…

0xc0000020錯誤代碼怎么處理,Windows11、10壞圖像錯誤0xc0000020的修復辦法

“0xc0000020”是一種 Windows 應用程序錯誤代碼&#xff0c;通常表明某些文件缺失或損壞。這可能是由于系統文件損壞、應用程序安裝或卸載問題、惡意軟件感染、有問題的 Windows 更新等原因導致的。 比如&#xff0c;當運行軟件時&#xff0c;可能會出現類似“C:\xx\xxx.dll …

LabVIEW 中 NI Vision 模塊的IMAQ Create VI

IMAQ Create VI 是 LabVIEW 中 NI Vision 模塊&#xff08;NI Vision Development Module&#xff09;的一個常用 VI&#xff0c;用于創建一個圖像變量。該圖像變量可以存儲和操作圖像數據&#xff0c;是圖像處理任務的基礎。 ? 通過以上操作&#xff0c;IMAQ Create VI 是構建…

HTML5 標簽輸入框(Tag Input)詳解

HTML5 標簽輸入框&#xff08;Tag Input&#xff09;詳解 標簽輸入框&#xff08;Tag Input&#xff09;是一種用戶界面元素&#xff0c;允許用戶輸入多個標簽或關鍵詞&#xff0c;通常用于表單、搜索框或內容分類等場景。以下是實現標簽輸入框的詳細講解。 1. 任務概述 標…

使用位操作符實現加減乘除!

歡迎拜訪&#xff1a;霧里看山-CSDN博客 本篇主題&#xff1a;使用位操作符實現加減乘除 發布時間&#xff1a;2025.1.1 隸屬專欄&#xff1a;C語言 目錄 位操作實現加法運算&#xff08;&#xff09;原理代碼示例 位操作實現減法運算&#xff08;-&#xff09;原理代碼示例 位…

[Spring] Spring AOP

&#x1f338;個人主頁:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;?熱門專欄: &#x1f9ca; Java基本語法(97平均質量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection與…

Java-數據結構-時間和空間復雜度

一、什么是時間和空間復雜度&#xff1f; &#x1f4da; 那么在了解時間復雜度和空間復雜度之前&#xff0c;我們先要知道為何有這兩者的概念&#xff1a; 首先我們要先了解"算法"&#xff0c;在之前我們學習過關于"一維前綴和與差分"&#xff0c;"…

商湯C++開發面試題及參考答案

C++11 有哪些新特性? C++11 帶來了眾多令人矚目的新特性,極大地豐富和增強了這門編程語言的功能與表現力。 首先是類型推導方面,引入了auto關鍵字。通過auto,編譯器能夠自動根據初始化表達式來推導出變量的類型,這在處理復雜的模板類型或者較長的類型聲明時非常方便,能讓…

Cesium 實戰 27 - 三維視頻融合(視頻投影)

Cesium 實戰 27 - 三維視頻融合(視頻投影) 核心代碼完整代碼在線示例在 Cesium 中有幾種展示視頻的方式,比如墻體使用視頻材質,還有地面多邊形使用視頻材質,都可以實現視頻功能。 但是隨著攝像頭和無人機的流行,需要視頻和場景深度融合,簡單的實現方式則不能滿足需求。…

U盤格式化工具合集:6個免費的U盤格式化工具

在日常使用中&#xff0c;U盤可能會因為文件系統不兼容、數據損壞或使用需求發生改變而需要進行格式化。一個合適的格式化工具不僅可以清理存儲空間&#xff0c;還能解決部分存儲問題。本文為大家精選了6款免費的U盤格式化工具&#xff0c;并詳細介紹它們的功能、使用方法、優缺…

如何使用AI工具cursor(內置ChatGPT 4o+claude-3.5)

??溫馨提示&#xff1a; 禁止商業用途&#xff0c;請支持正版&#xff0c;充值使用&#xff0c;尊重知識產權&#xff01; 免責聲明&#xff1a; 1、本教程僅用于學習和研究使用&#xff0c;不得用于商業或非法行為。 2、請遵守Cursor的服務條款以及相關法律法規。 3、本…

Spring Boot的開發工具(DevTools)模塊中的熱更新特性導致的問題

問題&#xff1a; java.lang.ClassCastException: class cn.best.scholarflow.framework.system.domain.entity.SysUser cannot be cast to class cn.best.scholarflow.framework.system.domain.entity.SysUser (cn.best.scholarflow.framework.system.domain.…

異常與中斷(上)

文章目錄 一、異常與中斷的概念引入與處理流程1.1 生活中的中斷1.2 母親如何處理中斷1.3 ARM系統中異常與中斷處理流程 二、ARM架構中異常與中斷的處理2.1 處理流程2.2 cortex M3/M42.2.1 M3/M4的向量表2.2.2 M3/M4的異常/中斷處理流程 2.3 cortex A72.3.1 A7的向量表2.3.2 A7的…

Zabbix 監控平臺 添加監控目標主機

Zabbix監控平臺是一個企業級開源解決方案&#xff0c;用于分布式系統監視和網絡監視。它由Zabbix Server和可選組件Zabbix Agent組成&#xff0c;通過C/S模式&#xff08;客戶端-服務器模型&#xff09;采集數據&#xff0c;并通過B/S模式&#xff08;瀏覽器-服務器模型&#x…

游戲關卡設計的常用模式

游戲關卡分為很多種&#xff0c;但常用的有固定套路&#xff0c;分為若干種類型。 關卡是主角與怪物、敵方戰斗的場所&#xff0c;包括裝飾物、通道。 單人游戲的關卡較小&#xff0c;偏線性&#xff1b; 聯機/MMO的關卡較大&#xff0c;通道多&#xff0c;自由度高&#xf…

【容器化技術 Docker 與微服務部署】詳解

容器化技術 Docker 與微服務部署 一、容器化技術概述 &#xff08;一&#xff09;概念 容器化技術是一種操作系統級別的虛擬化方法&#xff0c;它允許將應用程序及其依賴項&#xff08;如運行時環境、系統工具、庫等&#xff09;打包成一個獨立的、可移植的單元&#xff0c;這…

TypeScript 后端開發中的熱重載編譯處理

在一些除了nest框架外的一些其他nodejs框架中沒有提供對ts編譯和熱重載&#xff0c;如果使用typescript我們需要自己進行配置。 方法一&#xff08;推薦&#xff09; 使用bun運行環境&#xff08;快&#xff09;。注&#xff1a;一些不是使用js&#xff0c;ts代碼編寫的第三方…