通過SQL Server 2008 訪問Oracle

來源:互聯網
上載者:User

標籤:

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

準備工作

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

1. 安裝SQL Server 資料庫:SQL Server 2008 R2 Express

2. 安裝Oracle 用戶端訪問程式:Oracle 10g Client

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

ORADB =  (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTIP)(PORT = 1521))     (CONNECT_DATA = (SID = DBNAME))  )

4. 確保主機可以通過SQLPlus 訪問遠程Oracle 資料庫。

建立Linked Server

開啟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 資料庫連結。

訪問Oracle

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

SELECT * FROM LINKED_NAME..ACCOUNT_NAME.TABLE_NAME;

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

SELECT * FROM ORASVR..ADMIN.JOBS;

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

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

SELECT * FROM OPENQUERY(LINKED_NAME,‘SELECT * FROM TABLE_NAME‘);

按照OPENQUERY 的文法上面SQL 陳述式應變為:

SELECT * FROM OPENQUERY(ORASVR,‘SELECT * FROM JOBS‘);

這樣我們就可以在SQL Server 端方便的訪問Oracle 資料庫,並做相應的資料調整。

通過SQL Server 2008 訪問Oracle

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.