情況:
- 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*/)
-文本-
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/7336.html
標籤:Oracle
下一篇:Redis
