通过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

相关文章推荐

sqlserver/oracle update set from 写法

a表 b表 结构分别 id ,name , id,memo b表的memo需要对照a表  关键ID相同就可以更新,语句如下 update b set memo = a.name f...

jdbc 链接sqlserver2008的数据库设置

jdbc 链接sqlserver2008的数据库设置文章分类:Java编程 sqlserver2008的连接,用sqlserver2005的jar包sqljdbc.jar或者sqljdbc4.jar均...
  • gyflyx
  • gyflyx
  • 2010年09月25日 15:46
  • 27836

Eclipse中项目各资源目录的含义!(图示)

Eclipse中项目各资源目录的含义!(图示)
  • dxnn520
  • dxnn520
  • 2014年05月27日 19:51
  • 6954

How to setup linked servers for SQL Server and Oracle 64 bit client

How to setup linked servers for SQL Server and Oracle 64 bit client ProblemWe have two SQL 2005 64-b...

SQL Server直接查询: 其它的连接/Excel

首先, 在做这种操作之前, 要处理一下: --启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',...
  • yenange
  • yenange
  • 2011年08月19日 10:37
  • 1725

sql server 数据表结构导出

  • 2015年04月09日 15:15
  • 1KB
  • 下载

SQL Server用GUID值来完成数据表行标识

以下的文章主要描述的是SQL Server数据表中使用GUID值来作为行标识,GUID(Global unique identifier)全局唯一标识符,GUID(Global unique iden...

SQL Server数据表导出器

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

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