我是能夠建立一個鏈接的服務器遠程Oracle數據庫,它結束了一個多步驟的過程:
- SQL Server上安裝的Oracle ODBC驅動程序。
- 在SQL Server上創建系統DSN到Oracle數據庫。
- 使用系統DSN在SQL服務器上創建鏈接的服務器。
步驟1:在服務器上
一個安裝Oracle ODBC驅動程序。下載必需的Oracle Instant Client軟件包:Basic,ODBC和SQL * Plus(可選)
b。將軟件包解壓縮到SQL服務器上的本地目錄,通常爲C:\Oracle
。這應該導致一個[目錄],如C:\Oracle\instantclient_10_2
,這將是該答案的其餘部分引用的[目錄]的值。
c。創建一個名爲tnsnames.ora
即時客戶端[目錄]包含以下中的文本文件:
OracleTnsName =
(
DESCRIPTION=
(
ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
)
(
CONNECT_DATA = (SERVICE_NAME=acc)
)
)
注:實際HOST
,PORT
和SERVICE_NAME
會根據Oracle服務器上,你正在建立一個連接。這些信息通常可以使用聽衆下的Oracle網絡客戶端工具找到。
OracleTnsName
可以是您想要分配給Oracle數據源的任何名稱,並且將在設置系統DSN時使用。如果需要,您還可以使用上面的語法在同一個tnsnames.ora文件中定義多個TNS名稱。 d)。將[目錄]添加到系統PATH
環境變量。
e。創建一個名爲TNS_Admin
的新系統環境變量,其值爲[directory]
f。執行[directory]\odbc_install.exe
實用程序來安裝Oracle ODBC驅動程序。 g。
g。建議您重新啓動SQL服務器,但可能沒有必要。另外,您可能希望將安全權限授予此目錄以獲取SQL Server和SQL代理用戶身份。
第2步:創建一個使用Oracle ODBC驅動程序
的系統DNS。打開ODBC數據源管理員工具。 [管理工具 - >數據源(ODBC)]
b。選擇系統DSN選項卡,然後選擇添加按鈕。
c。在驅動程序列表中,選擇Oracle in instantclient {version}。 (例如'instantclient 10_2中的Oracle'),然後選擇完成按鈕。 d)。指定下列內容:
Data Source Name
:{系統DSN名稱}
Description
:{留空/空}
TNS Service Name
:應該在OracleTnsName
你列出的tnsnames.ora
文件中定義的,選擇它作爲價值。
- 用戶ID:{Oracle用戶名}
即選擇測試連接按鈕。應該提示您提供{Oracle用戶密碼}。如果一切順利,測試將會成功。
第3步:創建SQL鏈接服務器到Oracle數據庫
打開SQL Server中的查詢窗口,並執行以下命令:
EXEC sp_addlinkedserver
@server = '{Linked Server Name}'
,@srvproduct = '{System DSN Name}'
,@provider = 'MSDASQL'
,@datasrc = '{System DSN Name}'
EXEC sp_addlinkedsrvlogin
@rmtsrvname = '{Linked Server Name}'
,@useself = 'False'
,@locallogin = NULL
,@rmtuser = '{Oracle User Name}'
,@rmtpassword = '{Oracle User Password}'
注:{Linked Server Name}
可以是任何你想要的在引用Oracle服務器時使用,但{System DNS Name}
必須與先前創建的系統DSN的名稱相匹配。
{Oracle User Name}
應該與系統DSN使用的用戶ID相同,並且{Oracle User Password}
應該與用於成功測試ODBC連接的相同。有關解決Oracle鏈接服務器問題的信息,請參閱KB 280106。
查詢Oracle鏈接服務器
您可以使用OPENQUERY上的Oracle鏈接服務器執行傳遞查詢,但要注意,對於非常大的記錄,如果你指定一個您可能會收到一個ORA-01652
錯誤信息傳遞查詢中的ORDER BY
子句。將ORDER BY
子句從傳遞查詢移至外部select語句爲我解決了這個問題。
嗨,我發現[srvproduct]與調用sp_addlinkedserver時的[datasrc]具有相同的值。還想問你,如果安裝Oracle 11g express和ODT與ODAC 11.1,我將能夠測試一個鏈接到Oracle的服務器。 – 2012-07-16 04:36:52