具体步骤如下。
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)
以上语句在查询分析器里执行通过。
查询: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