首先sqlserver 鏈接oracle可以通過兩個訪問接口:
“MSDAORA” 和“OraOLEDB.Oracle”
1、“MSDAORA”訪問接口是由Microsoft OLE DB Provider for Oracle提供的,這里建議不使用此接口進行鏈接。通過該訪問接口建立的鏈接服務器在進行查詢oracle表(帶數據類型CLOB、BLOB字段)時會報這個錯誤“ 鏈接服務器""的 OLE DB 訪問接口 "MSDAORA" 返回了消息 "發生了一個 Oracle 錯誤,但無法從 Oracle 中檢索錯誤信息。"。 鏈接服務器""的 OLE DB 訪問接口 "MSDAORA" 返回了消息 "數據類型不被支持。"。 消息 7321,級別 16,狀態 2,第 1 行 准備對鏈接服務器 "" 的 OLE DB 訪問接口 "MSDAORA" 執行查詢"select * from SYS_MESSAGE"時出錯。”
2、“OraOLEDB.Oracle” 訪問接口是由oracle 的Oracle Probider for OLE DB 驅動提供的。它解決了兩個數據庫類型不一致的的問題。而且如果需要使用分布式事務,必須使用它來創建鏈接服務器。后文會有詳細介紹。 在創建之前,在SQLSERVER中,鏈接服務器->訪問接口->OraOLEDB.Oracle->右鍵屬性,選中 "Allow inprocess" (中文為:允許進程內) 這一步是使我們選擇的OraOLEDB.Oracle接口打開執行操作。如未設置會報如下錯誤: “無法初始化鏈接服務器 "null" 的 OLE DB 訪問接口 "OraOLEDB.Oracle" 的數據源對象"
服務器 windows server 2008 r2 64位 或 win 7 enterprise 64位
1. 服務器上需要安裝Oracle 64位的客戶端(http://www.oracle.com/technetwork/cn/database/10204-winx64-vista-win2k8-082253-zhs.html)
安裝完成后SQL Server的訪問接口上會新增”OraOLEDB.Oracle”(安裝32位客戶端,看不到)。
安裝:Windows Server2008 R2下安裝Oracle 10g
2. 配置”OraOLEDB.Oracle”屬性->啟用項“允許進程內”;
3. 新建鏈接服務器(名稱 自定 :ORA_LINK)
4. 填寫鏈接服務器名稱->選擇訪問接口”Oracle Provider for OLE DB”
5. 填寫產品名稱->Oracle
6. 數據源填寫Oracle客戶端/服務端配置的連接地址的服務名(tnsnames.ora中的服務名)
(listener.ora/sqlnet.ora/tnsnames.ora配置文件詳解)
(sqlnet.ora<->Oracle Net Manager 概要文件)(tnsnames.ora<->Oracle Net Manager 服務命名)(listener.ora<->Oracle Net Manager 監聽程序)
7. 填寫Oracle的登陸賬號密碼:選擇項->安全性->選擇”使用此安全上下文建立連接”,並填入Oracle登錄名與登陸密碼
SELECT * FROM OPENQUERY(ORA_LINK,'SELECT * FROM USERNAME.TABLE');
Oracle 的 透明網關(transparent Gateway) 也可以實現 Oracle 可以與 其它異構數據庫的互聯
