在sql2008上面建立dblink

在sql2008上面建立dblink
一.建立oracle的鏈接服務器
1.首先電腦上應該安裝有oracle的客戶端,並能連接到服務器
  (因爲這裏是TIPTOP ERP系統+oracle數據庫,所以電腦上oracle的安裝就先忽略)
2.在sql server2008的Management Stadio 中——鏈接服務器——新建鏈接服務器


3.在新建對話框"常規"選項卡里面:
  【鏈接服務器名字】:自己取一個,我這裏寫ERP
  【訪問接口選擇】:Microsoft OLEDB Provider for Oracle 驅動
  【產品名稱】:Oracle
  【數據源】:寫上自己電腦上tnsnames.ora 文件中配置的服務名;我這裏是topprod
  【訪問接口字符串】:user id=TEST;password=TEST(可以省略)


4.在新建對話框"安全性"選項卡里面,選擇安全性選項頁,
  使用此安裝上下文建立連接:
  【遠程登錄】:TEST
  【使用密碼】:******

5.SQL的寫法有兩種
<1>使用T-SQL語法:
  SELECT * FROM LNK1..用戶名.表名    --注意用戶名稱,表名稱要大寫

EX:SELECT * FROM ERP..SH_CCT.TC_QCS_FILE

<2>使用PLSQL語法:
    select * from openquery(LNK1,'select * from 用戶名.表名')

EX:SELECT * FROM openquery(ERP,'SELECT * FROM SH_CCT.TC_QCS_FILE')

第二種訪問方式比第一種約快50%;第二種訪問方式跟直連ORACLE的速度相當;
第一種訪問方式可能會導致一些意外錯誤,如:該表不存在,或者當前用戶沒有訪問該表的權限。
如果需要訪問的column中使用沒有精度的數據類型,這兩種查詢方式都可能會報錯,這是ORACLE的BUG,
無法修正,只能通過查詢語句的特殊處理規避這一問題:
OLEDB 提供程序 'OraOLEDB.Oracle' 爲列提供的元數據不一致。執行時更改了元數據信息。

查詢:SELECT * FROM OPENQUERY(TEST, 'SELECT * FROM tableName')
寫入:INSERT INTO OPENQUERY(TEST, 'SELECT * FROM tableName WHERE 1>1') VALUES(3,6,'ANDY')
更新:UPDATE OPENQUERY(TEST, 'SELECT * FROM tableName') SET role_id = 'ForTest' WHERE id = 3
刪除:DELETE OPENQUERY(TEST, 'SELECT * FROM tableName') WHERE id IN (1,3)


二.建立SQl Server的鏈接服務器(建立方法同上)
select * from [192.168.1.14].[EFNETDB].[dbo].py05b_shya
Select * From [鏈接服務器名].[遠程數據庫名].[所有者].[表名]
Select * from [127.0.0.1].[cntvs].[dbo].[t_class]

 

********************************************************************************************************************************************

大笑大笑==== Till good is better, but better best

大笑大笑====“我的努力不會停止,敬請期待吧!”My trying hard will go on!Please wait and see!

********************************************************************************************************************************************

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章