SQL2000与Oracle的分布式操作

 最近做的项目都会与Oracle产生数据的级联,在此标记:

数据库:
     我方项目:SQL2000(独立服务器--Win2003)
     客户:Oracle 9I(独立服务器--Win2003)
     
需求:
     当我方项目中特定数据发生变动时,包括新增,更新,删除时.要同步客户方的某数据库中数据.
本来想用触发器来做.考虑到维护问题所以放弃.改用分布式操作.
过程:
     首先要在我方服务器上安装Oracle客户端(因为要用OLE DB来连接),安装过程略过.测试Oracel没有问题后,就可以直接在"企业管理器"中建立"链接服务器"
"企业管理器"->选择自己的SQL服务器-->"安全性"-->"链接服务器".如图1
图1:


 右键单击"链接服务器"-->选择"新建链接服务器"-->在弹出的窗体的"链接服务器"中写入一个名字"HIS"(以后在TSQL中要用地)"服务器类型"下选择"其它数据源"
在"提供程序名称"的右面的下拉框中选中"Microsoft OLE DB Provider for Oracle"
如图2
图2:

下面就是填写"产品名称",数据源,连接字符串.这些内容都要可以在下面文件
"H:\oracle\ora92\network\ADMIN\tnsnames.ora"找到,其中"H:"是Oracle的安装盘
用记事本打开后内容如下:

# TNSNAMES.ORA Network Configuration  File : H:\oracle\ora92\network\admin\tnsnames.ora
# Generated 
by  Oracle configuration tools.

74   =
  (DESCRIPTION 
=
    (ADDRESS_LIST 
=
      (ADDRESS 
=  (PROTOCOL  =  TCP)(HOST  =   192.168 . 0.0 )(PORT  =   1521 ))
    )
    (CONNECT_DATA 
=
      (SERVICE_NAME 
=  recdb)
    )
  )

 

 

其中"74"便是"产品名称","数据源"所要填写的内容,"连接字符串":uid=Oracle用户;pwd=Oracle密码.全部内容如图3


然后选择"安全性"页,选择下面的"用此安全上下文进行"输入"远程登录"(Oracle用户名)和"远程登录密码"(Oracle用户密码),之后再打开"服务器选项"页将下面"值"
列全部勾选上.如图4

点击"确定"后,全部的配置就结束了.再看"企业管理器"的"链接服务器"下面就多了一个名称是"HIS"的链接服务器.
下面用'T-SQL'来操作Oracle的表:

 

/*
OPENQUERY(HIS, 'SELECT * FROM his.R_DEPT')
其中的'HIS'便是链接服务器的名称
*/
-- 查询R_DEPT表的数据,并列出所以有字段
SELECT   *  
FROM   OPENQUERY (HIS,  ' SELECT * FROM HIS.R_DEPT ' )

-- 查询R_DEPT表的数据,只列出'dept_code'字段的内容
SELECT   *  
FROM   OPENQUERY (HIS,  ' SELECT dept_code FROM HI.R_DEPT ' )

-- 查询指定条件的记录
SELECT   *   FROM   OPENQUERY (HIS, ' SELECT * FROM HIS.R_ADDRESS ' ) A  WHERE  A.ADDR_CODE = ' 3294 '
 
-- 插入一条新记录
INSERT   INTO   OPENQUERY (HIS, ' select addr_code,address from his.r_address ' )
VALUES ( ' 3294 ' , ' test ' )

-- 更新指定条件的记录
UPDATE   OPENQUERY (his, ' SELECT ADDR_CODE,ADDRESS FROM HIS.R_ADDRESS ' SET  ADDRESS = ' TEST '   WHERE  ADDR_CODE = ' 3294 '

-- 删除指定条件的记录
DELETE   FROM    OPENQUERY (HIS, ' SELECT * FROM HIS.R_ADDRESS ' WHERE  ADDR_CODE = ' 3294 '

注:以上操作,需Oracle用户有相关权限.

强烈建议,在编辑文章时加下"实时自动保存"功能,偶写内容时IE崩溃两次,重写了两次.郁闷!!!
(完) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值