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

原创 2007年09月24日 17:32:00
具体步骤如下。
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

Oracle至Sql Server用DB Link查询缓慢原因之一

公司系统有一个每日同步进程,从A系统数据库(Oracle 11g)提取B系统数据库(Sql Server 2005)每天新增的数据,实现的方法为:在A数据库中建立物理视图,来通过DBlink引用B数据...
  • sddnzhangjinyu
  • sddnzhangjinyu
  • 2016年08月11日 20:42
  • 1402

在sql server中用sp_addlinkedserver访问informix和oracle数据库

访问informix数据库:服务器及客户端配置见:http://blog.csdn.net/xieye/archive/2005/02/24/299536.aspx添加系统dsn:dsn_test,具...
  • xieye
  • xieye
  • 2005年02月24日 08:43
  • 1262

SQL Server链接服务器 Linked Server

使用方法Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-...
  • iwteih
  • iwteih
  • 2009年09月14日 13:45
  • 8011

Windows Server 2008 内SQLServer建立Linked Server连接Oracle

  • 2017年07月20日 00:13
  • 1.08MB
  • 下载

跨库查询(OpenDataSource)与链接服务器(Linking Server)

一:跨库查询 Openrowset/opendatasource() is an ad-hoc method to access remote server's data. So, if you o...
  • luminji
  • luminji
  • 2013年11月27日 14:04
  • 1609

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

具体步骤如下。1.建立Linked Servers,如下图,在常规项下选择“其它数据源”下的Oracle,链接服务器及产品名称可任意填写,只是一个标志,最关键的地方是数据源一定要填正确 2.安全性选项...
  • runAndRun
  • runAndRun
  • 2007年09月24日 17:32
  • 3794

SQL SERVER 2005中创建linked servers对象访问oracle数据库

打开SQL SERVER 2005,首先创建Lin
  • hu_shengyang
  • hu_shengyang
  • 2014年05月13日 16:19
  • 2652

SQL server linked server 权限配置页面

http://technet.microsoft.com/en-us/library/ms188477(v=sql.105).aspx 需要注意的是里面很多权限选项只针对SQL Server...
  • OnlyQi
  • OnlyQi
  • 2013年12月12日 10:19
  • 1134

Content Linking组件[Asp]

 曾经用DW做网页都有这样一个烦恼:新做了页面,其它所有相关的页都要重新再做一次超级链接。一次也就罢了,多了多了不禁觉得无用功做了不少。试想如果能有一个专门的文件来负责页面的连接那该多好。 Conte...
  • JavaProgramers
  • JavaProgramers
  • 2005年04月13日 20:45
  • 2276

J-Link gdb server 2440

  • 2017年11月29日 21:52
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过SQL Server的Linked Servers连接到Oracle以直接更新相关数据表
举报原因:
原因补充:

(最多只允许输入30个字)