SQL Server中查询ORACLE的数据
通過鏈接服務(wù)器,SQL Server 數(shù)據(jù)庫引擎 和 Azure SQL 數(shù)據(jù)庫托管實(shí)例可從遠(yuǎn)程數(shù)據(jù)源中讀取數(shù)據(jù),并針對 SQL Server 實(shí)例之外的 OLE DB 數(shù)據(jù)源等遠(yuǎn)程數(shù)據(jù)庫服務(wù)器執(zhí)行命令。
在本場 Chat 中,會講到如下內(nèi)容:
- 通過在 MS SQL Server 設(shè)置鏈接服務(wù)器而訪問 Oracle 數(shù)據(jù)庫數(shù)據(jù)的簡單例程
適合人群:
- 需要從其他類型數(shù)據(jù)庫數(shù)據(jù)導(dǎo)入 SQL Server 的技術(shù)人
- 需要通過 SQL Server 操作其他數(shù)據(jù)庫的技術(shù)人
說明
從 SQL Server 中查詢 ORACLE 中的數(shù)據(jù),可以在 SQL Server 中創(chuàng)建到 ORACLE 的鏈接服務(wù)器來實(shí)現(xiàn)的,但是根據(jù) 32 位 、64 位的機(jī)器和軟件,需要用不同的驅(qū)動程序來實(shí)現(xiàn)。
本例程在 64 位的機(jī)器上,通過訪問接口:OracleProvide for OLE DB,來實(shí)現(xiàn)。
1、測試環(huán)境
Microsoft Windows [版本 10.0.17134.556]Microsoft SQL Server 2016 (SP2-GDR) (KB4293802) - 13.0.5081.1 (X64) (Build 17763: )Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
2、ORACLE 環(huán)境的設(shè)置
Sqlserver 服務(wù)器安裝 Oracle 客戶端,此過程省略在 Oracle 上創(chuàng)建數(shù)據(jù)庫用戶并創(chuàng)建數(shù)據(jù)表
C:\Users\schina>sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on 星期二 1 月 22 14:40:41 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsSQL> drop user schina cascade;SQL> create user schina identified by schina;SQL> grant dba to schina;SQL> conn schina/schinaSQL> create table testt(a int,b varchar2(100));SQL> insert into testt values(123,'abc');SQL> commit;SQL>配置 listener.ora
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 123-111)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )配置 tnsname.ora
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 123-111)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )配置 Oracle 網(wǎng)絡(luò)安全,,不配置此項(xiàng)可能報(bào)“ORA-12638: 身份證明檢索失敗” 錯誤
方法一 設(shè)置鏈接服務(wù)器
新建鏈接服務(wù)器選擇“新建鏈接服務(wù)器”“常規(guī)”屬性頁填寫鏈接服務(wù)器:鏈接別名,可隨意提供程序:Oracle Provider for OLE DB產(chǎn)品名稱:隨意數(shù)據(jù)源:為 tnsname.ora 內(nèi)配置的名稱范圍接口字符串:保留空即可在“安全性”屬性頁,選擇使用次安全上下文建立連接遠(yuǎn)程登陸:oracle 用戶名使用密碼:oracle 用戶密碼可能錯誤解決方法在“訪問接口”處,修改一下接口權(quán)限測試查詢
select * from openquery(ora, 'SELECT * FROM testt')方法二 openrowset
也可以使用
select * from openrowset('OraOLEDB.Oracle', --接口 'orcl'; --tnsname 配置名 'schina'; --用戶名 'schina', --密碼 'select * from testt') --語句其他設(shè)置
由于安全配置可能會報(bào)如下錯誤SQL Server 阻止了對組件“Ad Hoc Distributed Queries”的 STATEMENT“OpenRowset/OpenDatasource”的訪問,因?yàn)榇私M件已作為此服務(wù)器安全配置的一部分而被關(guān)閉。系統(tǒng)管理員可以通過使用 sp_configure 啟用“Ad Hoc Distributed Queries”。有關(guān)啟用“Ad Hoc Distributed Queries”的詳細(xì)信息,請搜索 SQL Server 聯(lián)機(jī)叢書中的“Ad Hoc Distributed Queries”。啟用 Ad Hoc Distributed Queries 的方法,執(zhí)行下面的查詢語句就可以了:
exec sp_configure 'show advanced options',1 reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure閱讀全文: http://gitbook.cn/gitchat/activity/5df0963dea5c803f1fc56b3d
您還可以下載 CSDN 旗下精品原創(chuàng)內(nèi)容社區(qū) GitChat App , GitChat 專享技術(shù)內(nèi)容哦。
總結(jié)
以上是生活随笔為你收集整理的SQL Server中查询ORACLE的数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【合作】云计算基础架构【图】
- 下一篇: mysql 查询分析器_MYSQL查询分