SQL 連接 Oracle方法

USE [master]
GO
EXEC --添加服務
master.dbo.sp_addlinkedserver   --命令名稱
@server = N'TEST',            --參數1,連接oracle的數據源名稱
@srvproduct=N'ORACLE',         --參數2,連接的數據源的產品名稱
@provider=N'MSDAORA',        --參數3,訪問的接口方式
@datasrc=N'ERPORA'           --參數4,被訪問的數據源名稱
GO
EXEC --添加用戶
master.dbo.sp_addlinkedsrvlogin   --命令名稱
@rmtsrvname = N'TEST',             --數據源名稱
@locallogin = NULL ,                       --本地登陸
@useself = N'False',                       --指定用用戶名和密碼登陸
@rmtuser = N'SCOTT',                   --用戶名稱
@rmtpassword = N'a123456'          --用戶密碼
go

select * from TEST..ERP.BAS_DEPT --測試結果

USE [master]
GO
EXEC --從本地 SQL Server 實例中的已知遠程服務器和鏈接服務器的列表中刪除服務器。
master.dbo.sp_dropserver
@server=N'TEST',
@droplogins='droplogins'
GO

前提條件
1)在SQL_SERVER 2005服務器上安裝Oracle 9i的客戶端。
假設安裝到D:\99.88.66.software\02.oracle目錄。
注意需將ORACLE安裝後的目錄設爲Everyone權限。
2)配置D:\99.88.66.software\02.oracle\02.Ora92I\network\admin\tnsnames.ora 文件。
配置示例
HAODAIFU=
(DESCRIPTION =
    (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.119)(PORT = 1521)))
    (CONNECT_DATA = (SERVICE_NAME = haodaifu))
)
3)在DOS模式下運行以下命令以便確認ORACLE客戶端安裝無誤。
a:sqlplus scott/a123456@haodaifu
b:tnsping haodaifu
C:\Documents and Settings\Administrator>tnsping haodaifu
TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 13-12月-2007 04:36:15
Copyright (c) 1997, 2007, Oracle. All rights reserved.
已使用的參數文件:
D:\99.88.66.software\02.oracle\DB11G\11G\network\admin\sqlnet.ora
已使用 TNSNAMES 適配器來解析別名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.8.122)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = haodaifu))
)
OK (10 毫秒)
4)打開控制面板-服務,確認Distributed Transaction Coordinator服務已經啓動。
5)修改註冊表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
OracleOciLib = oci.dll
OracleSqlLib = orasql9.dll
OracleXaLib = oraclient9.dll
6)重啓SQL_SERVER服務器
7)圖形創建鏈接服務器方法--〉
A)打開SQL SERVER Management Studio,新建鏈接服務器。
B)鏈接服務器:寫上鍊接服務器的名字,如:test
C)訪問接口:選擇 Microsoft OLE DB Provider for Oracle
D)產品名稱:寫上 Oracle
E)數據源:寫上tnsnames.ora 文件中配置的服務名,如:haodaifu
F)訪問接口字符串:user id=用戶名;password=口令(可以省略)
G)選擇安全性選項頁,使用此安裝上下文建立連接:
   a.遠程登錄:scott
   b.使用密碼:a123456
H)確定
8)SQL的寫法有兩種
a)使用T-SQL語法:
   SELECT * FROM LNK1..用戶名.表名--注意用戶名稱,表名稱要大寫
b)使用PLSQL語法:
   select * from openquery(LNK1,'select * from 用戶名.表名')
   第二種訪問方式比第一種約快50%;第二種訪問方式跟直連ORACLE的速度相當;
   第一種訪問方式可能會導致一些意外錯誤,如:該表不存在,或者當前用戶沒有訪問該表的權限。
   如果需要訪問的column中使用沒有精度的數據類型,這兩種查詢方式都可能會報錯,這是ORACLE的BUG,
   無法修正,只能通過查詢語句的特殊處理規避這一問題:
        OLE DB 提供程序 'OraOLEDB.Oracle' 爲列提供的元數據不一致。執行時更改了元數據信息。

1、對遠程表執行 UPDATE、 INSERT, 或 DELETET 示列

update openquery(linked1, 'select ssn from testlinked where ssn=2')
set ssn=ssn + 1
insert openquery(linked1, 'select ssn from testlinked where 1=0'values (1000)
delete openquery(linked1, 'select ssn from testlinked where ssn>100')

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/htl258/archive/2009/04/14/4072831.aspx

 

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