2011年1月14日 星期五

MSSQL 建立 Link Server 連至 Oracle DB Server

再安裝完 instant client 之後,必須要設定一些環境變數,如:

NLS_LANG = TRADITIONAL CHINESE_TAIWAN.zht16big5
TNS_ADMIN = 指到 tnsnames.ora 目錄
(tnsnames.ora 通常是在 instant client 目錄中建立 /network/admin 下面存放 )

之後最好先以Oracle 的 sql developer 等軟體測試驗證看看是否可以成功連至遠端Oracle server

如果先前準備工作順利完成後, 就可以開始來建立 Link Server 了



如果使用tnsnames.ora 來指出 oracle 的服務 如



則產品名稱填寫 Oracle 與 資料來源填寫 tnsnames.ora 裡面的 網路服務名稱 ,這裡是 NANTOUCS,並給予這個Link Server 一個名字,如 Oracle



在安全性的那一頁 填寫上登入的帳號密碼



完成後點選確定即可完成,如果事前準備工作有缺漏,則在這裡就可能會跳出錯誤訊息

如果要確認是否 Link Server 是否連結正常,可以做個連線測試



成功的話會跳出成功的訊息,如



失敗的話就會跳出錯誤訊息,如



做到這裡就已經大功告成了 可以開始對遠端的 oracle server 作查詢了 ^^

最後發覺一個重點,就是為什麼有的需要設定ODBC,有的不用,原因是因為...

如果您使用 Microsoft ODBC Driver for Oracle,則可使用 @datasrc 參數來指定 DSN 名稱。如果無 DSN 連線,則提供者字串可透過 @provstr 參數提供。有 Microsoft OLE DB Provider for Oracle 時,使用在 TNSNames.Ora 檔案中設定的 Oracle 伺服器別名來當作 @datasrc 參數。

另外一點(這也是從微軟網站上面挖的)

注意 如果您使用協力廠商的 Oracle 提供者,且 Oracle 提供者無法在 SQL Server 處理程序外執行,請變更提供者選項,以執行同處理序。如果要變更提供者選項,請使用下列其中一種方法。
  • 方法 1
    找出下列登錄機碼。然後,將 AllowInProcess (DWORD) 項目的值更改為 1。可在對應的提供者名稱底下找到此登錄機碼:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
  • 方法 2
    當您新增新的連結伺服器時,透過 SQL Server Enterprise Manager 直接設定 [允許 InProcess]選項。按一下 [提供者選項],再按一下以選取 [允許 InProcess] 核取方塊。