sql server 使用鏈接服務器連接Oracle,openquery查詢數據


 

對接問題描述:不知道正式庫oracle數據庫賬戶密碼,對方願意在對方的客戶端上輸入賬號和密碼,但不告訴我們

解決方案:使用一台sql server作為中間服務器,可以通過轉存數據到sql server,再從sql server同步數據到我方數據庫。在sql server 上建立一個鏈接服務器連接Oracle,通過openquery查詢oracle數據

 

具體實施方案

在sql server創建鏈接服務器,通過鏈接服務器查詢oracle數據,鏈接服務器對方設置,我方不知道賬戶和密碼。

創建連接服務器方案如下圖:

1、  確保pl/sql能夠登錄上oracle,查看pl/sql的聯系信息文件tnsnames.ora,找到數據庫連接相關信息,如下圖:

 

 

如圖,CUNJK即數據庫名字,需要被sql server鏈接服務器使用

2、  登錄sql server,創建鏈接服務器,找到鏈接服務器文職,服務器對象->鏈接服務器,步驟如下圖

 

 

訪問接口調節oracle的訪問接口,服務器對象->鏈接服務器->訪問接口,右鍵OraCLEDB.Oracle打開屬性,勾選允許進程內

 

 

3、  創建鏈接服務器

右鍵鏈接服務器->新建鏈接服務器,填寫創建服務器名字,選擇訪問接口為oracle,產品名稱為Oracle,數據源請填寫與pl/sql鏈接信息相同,

 

 

安全性登錄,如下圖:

輸入Oracle的賬戶和密碼,密碼隱藏,我方不會知曉,

 

 

服務器選項配置,如下圖:

調節RPC為Ture,RPC Out為True

 

 

確定完成。

4、  建立查詢,測試

查詢鏈接服務器需要使用OPENQUERY函數進行查詢,sql請參考SQL server的語法原則,示例如下:

SELECT top 1 * FROM OPENQUERY(CUNJK,'select * from  cjk_account') a;

 

 

方案總結:能通過sql server查詢數據,我方即可通過同步程序連接sql sever進行數據同步

 

 

鏈接服務器查詢  OPENQUERY

 使用sql server鏈接服務器查詢oracle ,會先通過查詢sql 查詢oracle,緩存到sql server 中,再通過sql server 查詢,查詢會較慢

OpenQuery 是SQL Server用來與其他Server交互的一種技術,通過OpenQuery,SQL Server 可以直接訪問其他數據庫資源。而其他數據庫在OpenQuery 表達式中是以Linked Server 存在的

在OpenQuery內部添加查詢條件,比在外面添加查詢速度相對較快,在內部添加條件’’(單引號字符串條件)會有限制,’’(單引號必須進行轉義),兩個雙引號,代表一個雙引號,示例如下:

Select from OPENQUERY(R,'select * from  cjk_account where createdate < ''2019-03-17 08:52:55'' ')

 

如果對openquery查詢還沒有弄明白,可參考這篇博文:http://www.cnblogs.com/Dannier/archive/2011/09/21/openquery.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM