天天看點

通過SQL Server 2008 通路Oracle 10g準備工作建立Linked Server通路Oracle

之前寫過一篇關于SQL Server 通路MySQL 資料庫的文章,最近正好又遇到需要通路Oracle 的情況,将配置過程記錄下來也供大家參考。

事先在需要通路Oracle 資料庫的主機上完成以下工作:

3. 配置Oracle 用戶端tnsnames.ora 檔案,其中需要注意檔案中的資料庫别名“ORADB”,該名稱在下文建立Linked Server 時将會使用到。

4. 確定主機可以通過SQLPlus 通路遠端Oracle 資料庫。

打開SQL Server Management Studio 進入Server Objects 清單,右鍵Linked Servers,點選“New Linked Server...”

在General 界面中填寫下面幾項内容:

Linked server: 填寫Linked Server 名稱

Provider:選擇Microsoft OLE DB Provider for Oracle

Product name:填寫Oracle

Data source:填寫上面提到的資料庫别名ORADB

     點選Security ,點選“Be made using this security context”,假設Oracle 資料庫有一個名稱為admin 的使用者ID,在“Remote login”中輸入通路帳号,點選“OK”結束建立。

完成後Linked Servers 中會看到剛建立的Oracle 資料庫連結。

接下來就可以在SQL Server 端通路Oracle 資料庫了,查詢文法如下:

結合上面的執行個體,假如要查詢admin 使用者下jobs 表的内容,則相應SQL 語句應為:

     使用上述方法進行資料查詢時,若Oracle 表有NUMBER 列時會出現轉化錯誤,這時可以将NUMBER 類型轉化為字元串(也有将該列屬性修改成NUMBER(10),為NUMBER 列設定好位數)。考慮到View 查詢等因素個人感覺還是轉為字元串的方式較為通用。

     當然如果查詢的列過多,每個NUMBER 列都轉為VARCHAR 的話工作量也的确不小,這時最好的方法就是使用OPENQUERY 函數:

按照OPENQUERY 的文法上面SQL 語句應變為:

這樣我們就可以在SQL Server 端友善的通路Oracle 資料庫,并做相應的資料調整。

本文轉自Gnie部落格園部落格,原文連結:http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html,如需轉載請自行聯系原作者