通过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
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

通过数据链接(Database Link),从Oracle 9i 连接 SQL Server 2000

从Oracle 9i连接SQL Server2000,需要用透明网关(Transparent Gateway),通过它,我们可以 sqlplus 操纵其他数据库,如 ms sqlserver 、 sy...

sql server linkserve连接到oracle

使用方法 exec sp_addlinkedserver @server,@srvproduct,@provider,@datasrc,@location,@provstr,@catalog; ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

SQL Server连接Oracle

1.安装Oracle基础客户端和Oracle ODBC驱动程序 关于这一步网上有很多种方法,这里楼主收集了三种方法,并给出相关链接 方法一:安装Oracle数据库存储组件ODAC 详见:《Ora...

从Oracle 9i连接SQL Server数据库

从Oracle 9i连接SQL Server2000,需要用透明网关(Transparent Gateway),通过它,我们可以操纵其他数据库,如 ms sqlserver 、 sybase 、 in...

netbeans连接到sql server 2000数据库

菜鸟一只,终于做成了这一件事,怕没多久又忘了,赶紧记下来。 1.装上了sql server 2000,装上了netbeans 2.下载jdbc驱动,挑了个Microsoft SQL Server JD...

C#连接到SQL Server,SQLite数据库

项目要用到数据库,所有就开始搞SQL Server ,下面是C#中连接SQL Server的代码,虽然最后项目改用了SQLite,在此记录一下 C#中连接SQL Server的代码: ...

C# 通过DataGridview的直接更新MSSQL

C# DataGridView 更新 SQL Server数据库

SQL server数据库连接

在连接SQL server 2005数据库时,经常出现如下错误:在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会...

SQl Server 数据库多表连接

【缘由】      为了防止数据的冗余,我们会将数据库中表进行拆分,这样就产生了多张表,表与表之间通过主外键关联,但这样又造成了我们查找和修改的困难,如何进行多表之间的查找呢?      我们将一...

oracle 连接相关

有的时候我们需要调整oracle数据库的最大链接数,而这个链接数的调整是在oacle下的dbs目录下init.ora文件中调整的。     ORACLE的连接数(sessions)与其参数文件中的进...
  • DR_LF
  • DR_LF
  • 2011-09-23 09:16
  • 434
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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