在sql2008上面創建dblink

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


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..用戶名.表名    --注意用戶名稱,表名稱要大寫
服務器

[sql]   view plain copy print ?
  1. EX:SELECT * FROM ERP..SH_CCT.TC_QCS_FILE  

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

[sql]   view plain copy print ?
  1. EX:SELECT * FROM openquery(ERP,'SELECT * FROM SH_CCT.TC_QCS_FILE')  

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

[sql]   view plain copy print ?
  1. 查詢:SELECT * FROM OPENQUERY(TEST, 'SELECT * FROM tableName')  
  2. 寫入:INSERT INTO OPENQUERY(TEST, 'SELECT * FROM tableName WHERE 1>1'VALUES(3,6,'ANDY')  
  3. 更新:UPDATE OPENQUERY(TEST, 'SELECT * FROM tableName'SET role_id = 'ForTest' WHERE id = 3  
  4. 刪除: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]
ide

相關文章
相關標籤/搜索