Oracle OLE DB 提供者
Oracle Provider for OLE DB (8.1.7.3.0) 允許針對 Oracle 資料庫中的資料進行分散式查詢。對於 Oracle Provider for OLE DB 的支援如下所示:
Oracle 32 位元 |
僅適用於跨處理序 |
Oracle 64 位元 |
無 |
若要建立連結伺服器來存取 Oracle 資料庫執行個體
請確認執行 MicrosoftSQL Server 之伺服器上的 Oracle 用戶端軟體位於提供者所需的層級。Oracle Provider for OLE DB (8.1.7.3.0) 需要 Oracle Client 8.1.7.0。
在執行 SQL Server 的伺服器上建立伺服器的別名,以指到 Oracle 資料庫執行個體。如需詳細資訊,請參閱 Oracle 文件集。
執行 sp_addlinkedserver 來建立連結伺服器,指定 OraOLEDB.Oracle 作為 provider_name,並指定 Oracle 資料庫的別名作為 data_source。
下列範例假設別名已定義為 DQORA8:
exec sp_addlinkedserver @server='OrclDB', @srvproduct='Oracle', @provider='OraOLEDB.Oracle', @datasrc='DQORA8'
安全性注意事項
這個範例不使用 Windows 驗證。密碼會以未經加密的方式傳輸。在儲存於磁碟的資料來源定義和指令碼中、備份中和記錄檔中,可能看得見密碼。請勿在這種連接中使用管理員密碼。如需您環境的特定安全性指引,請洽詢網路管理員。
使用 sp_addlinkedsrvlogin 來建立 SQL Server 登入到 Oracle 登入的登入對應。
下列範例將使用 Oracle 登入與密碼 OrclUsr 與 OrclPwd 來將 SQL Server 登入 Joe 對應至步驟 3 所定義的連結伺服器:
sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', @useself = 'false', @locallogin = 'Joe', @rmtuser = 'OrclUsr', @rmtpassword = 'OrclPwd'
在參考 Oracle 連結伺服器內的資料表時,請使用下列規則:
若資料表與資料行名稱是在 Oracle 中所建立,且不包含引號識別碼,請使用全部大寫字的名稱。
若資料表與資料行是在 Oracle 中所建立,且包含引號識別碼,請使用與當初在 Oracle 中建立時所使用的相同名稱 (包括字母大小寫)。
即使資料表的某些資料行可以為 NULL 或有預設值,INSERT 陳述式應該提供值給資料表內的所有資料行。
此提供者並不支援直接傳遞 datetime 常值作為下列格式的引數:
EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>
例如,不支援下列 datetime 常值 '14-sep-94' 的使用:
EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB
請改建立 datetime 變數,指派常值給它,並將該變數作為引數來呼叫 EXEC:
DECLARE @v1 datetime SET @v1 = CONVERT(datetime,'14-sep-94') EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
限制
SQL Server 並不支援針對 Oracle 資料表使用 AVG 彙總函數,因為 Oracle 提供者會傳回 OLE DB 類型的 DBTYPE_VARNUMERIC。SQL Server 並不支援 DBTYPE_VARNUMERIC。例如,下列程式碼會傳回錯誤:
SELECT AVG(QTY)
FROM ORA..RPUBS.SALES
若要避免錯誤發生,請使用 OPENQUERY。例如:
SELECT *
FROM OPENQUERY(ORA,
'SELECT CAST (AVG(QTY) AS numeric)
FROM ORA..RPUBS.SALES')
登錄項目
若要讓 OLE DB Provider for Oracle 與 Oracle 用戶端軟體一起運作,您必須從指令行執行登錄檔以修改用戶端的登錄。用戶端軟體的多個執行個體不應該同時執行。這些檔案列在下表中,並位於包含 Microsoft Data Access Component (MDAC) 安裝的相同目錄結構內。這通常是位於 C:\Program Files\Common Files\System Files\OLE DB。
Oracle 用戶端 |
Windows NT 或 9x |
Windows 2000 |
---|---|---|
7.x |
mtxoci7x_winnt.reg |
mtxoci7x_win2k.reg |
8.0 |
mtxoci80_winnt.reg |
mtxoci80_win2k.reg |
8.1 |
mtxoci81_winnt.reg |
mtxoci81_win2k.reg |