通过SQL Server的Linked Servers连接到Oracle以直接更新相关数据表

具体步骤如下。
1 .建立 Linked Servers ,如下图,在常规项下选择“其它数据源”下的 Oracle ,链接服务器及产品名称可任意填写,只是一个标志,最关键的地方是数据源一定要填正确
 
2.安全性选项卡下面如下设置,把用户名及密码写上,服务器选项默认就行。
 
 
3.假设在第一步的设置里“链接服务器名”里填入的是“TEST”,查询、写入、更新及删除以表tableName为例用如下语句
查询: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)
以上语句在查询分析器里执行通过。
 
补充:
在建立 Linked Servers 之前还有一个重要的步骤,当然,这一步也可以放在建立 Linked Servers 之后。
这个步骤就是 Oracle 的客户端配置,需要在SQL Server所在的服务器上安装Oracl的客户端,然后按如下步骤操作:
1.打开配置工具
 
2.在下图中,点开“Net8 Configuration”==>>“Local”==>>“Service Naming”,然后点击蓝色“+”号
3.在弹出来的窗口,按提示一步一步设置
4.最后一步,建议点“Test”测试一下
5.在弹出来的窗口,需要换一个已知用户测试,如果测试不成功,说明配置过程有问题。
以上步骤,我在两台安装window 2003 Server的电脑上测试通过,但在一台windows 2000 Server上测试的时候没有成功,有待进一步摸索,如果有知道的朋友,敬请告之,在windows 2000 Server服务器上测试的时候显示如下的错误信息
 
总结:
连接语句的最关键部分是使用SQL的函数OPENQUERY,查询、写入、更新及删除的目标表都用OPENQUERY函数来打开Oracle的表就可以了,有关OPENQUERY函数的说明,SQL Server的帮助文档里如下:

OPENQUERY

在给定的链接服务器(一个 OLE DB 数据源)上执行指定的直接传递查询。可以在查询的 FROM 子句中像引用表名那样引用 OPENQUERY 函数。依据 OLE DB 提供程序的能力,还可以将 OPENQUERY 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。

语法

OPENQUERY ( linked_server , 'query' )

参数

linked_server

一个标识符,表示链接的服务器的名称。

'query'

在链接的服务器中执行的查询字符串。

注释

OPENQUERY 不接受参数变量。

示例

下面的示例利用用于 Oracle 的 Microsoft OLE DB 提供程序针对 Oracle 数据库创建一个名为 OracleSvr 链接的服务器。然后,该示例对此链接的服务器使用一个直接传递查询。

说明  本示例假定已经创建了一个名为 ORCLDB 的 Oracle 数据库别名。

 

EXEC sp_addlinkedserver 'OracleSvr', 
   'Oracle 7.3', 
   'MSDAORA', 
   'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles') 
GO
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值