SQL 连接 Oracle方法

时间:2024-02-24 15:08:53

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