oracle数据库访问sqlserver2008,透过SQL Server 2008访问Oracle 10g的配置方法
之前寫過一篇關于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*FROMLINKED_NAME..ACCOUNT_NAME.TABLE_NAME;
結合上面的實例,假如要查詢admin 用戶下jobs 表的內容,則相應SQL 語句應為:
SELECT*FROMORASVR..ADMIN.JOBS;
使用上述方法進行數據查詢時,若Oracle 表有NUMBER 列時會出現轉化錯誤,這時可以將NUMBER 類型轉化為字符串(也有將該列屬性修改成NUMBER(10),為NUMBER 列設定好位數)。考慮到View 查詢等因素個人感覺還是轉為字符串的方式較為通用。
當然如果查詢的列過多,每個NUMBER 列都轉為VARCHAR 的話工作量也的確不小,這時***的方法就是使用OPENQUERY 函數:
SELECT*FROMOPENQUERY(LINKED_NAME,'SELECT?*?FROM?TABLE_NAME');
按照OPENQUERY 的語法上面SQL 語句應變為:
SELECT*FROMOPENQUERY(ORASVR,'SELECT?*?FROM?JOBS');
這樣我們就可以在SQL Server 端方便的訪問Oracle 數據庫,并做相應的數據調整。
原文標題:通過SQL Server 2008 訪問Oracle 10g
鏈接:http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html
【編輯推薦】
【責任編輯:彭凡 TEL:(010)68476606】
點贊 0
總結
以上是生活随笔為你收集整理的oracle数据库访问sqlserver2008,透过SQL Server 2008访问Oracle 10g的配置方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪引领的风潮?曝蔚来也将布局百万级豪
- 下一篇: oracle 小计 排序,使用SQL实现