【SQL】用SSMS連接Oracle手記


情況:

  • A機上有SSMS 18.x,
  • B機上有SQL Server 2008 R2數據庫,
  • C機上有Oracle Database 11.2.0.4.0數據庫

我想在A機用ssms連C機的oracle,一番了解,普遍做法是裝ODAC xcopy包,里面有oledb組件,然后就可以在sqlserver的鏈接服務器里添加oracle數據庫。如圖:

 

於是我開始在ssms所在電腦裝odac,結果提供程序的下拉列表里死活不出現“Oracle Provider for OLE DB”,后來想想也許應該在sql server所在電腦裝才對,果然,有了,但緊接着又是連不上的問題:

 

按關鍵字OraOLEDB.Oracle 7302搜,相同問題一堆,有說勾一下【允許進程內】的,有說把sqlserver服務的啟動賬戶改為【LOCAL SERVICE】的,也有通過若干步驟修改一個叫【MSDAINITIALIZE】的dcom組件的權限的,我都試過了,sqlserver服務器也重啟了無數次,odac版本也試過若干個,統統不能解決我的問題。絕望之下,我下了【Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (x64)】,只勾了里面的oledb(具體叫啥我懶得回看了)一個東西,終於連上了。

總結:

  • 一定要有個SQL Server。光ssms和oracle是建立不起連接的,本質上連接oracle的是sql sever,不是ssms本身。
  • oledb要裝在sql server所在電腦上。我是裝oracle客戶端里的oledb才有用,odac里的沒用,估計還是版本問題。

示例:

--注意用戶和表名大小寫敏感
--用T-SQL的語法
SELECT TOP 10 * from 鏈接服務器別名..用戶.表名

--或者。此寫法可以解決當xxx中有timestamp列時上面的寫法會報錯的問題,參考https://andyspecht.github.io/2017-10-03-linked-server-fail/
select * from openquery(鏈接服務器別名, 'select * from xxx'/*plsql*/)

 

-文本-


免責聲明!

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



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