sql访问oracle数据库

1.在创建之前,在SQLSERVER中,链接服务器->访问接口->OraOLEDB.Oracle->右键属性,选中 "Allow inprocess" (中文为:允许进程内)
这一步是使我们选择的OraOLEDB.Oracle接口打开执行操作。

如未设置会报如下错误:
 “无法初始化链接服务器 "null" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的数据源对象"

2.建立数据库连接:
--建立数据库链接服务器
EXEC sp_addlinkedserver
@server =N'OraclePolice', --要创建的链接服务器别名
@srvproduct=N'Oracle', --产品名称
@provider=N'OraOLEDB.Oracle', --OLE DB 驱动名称
@datasrc=N'ORCL' --数据源oracle"ora10g"network"admin"tnsnames.ora查看(或@datasrc='localhost/ORCL'--要访问的服务器)

EXEC sp_addlinkedsrvlogin
'OraclePolice', --已建立的链接服务器名
'false', -- 固定 */
NULL, --为每个登陆SQL SERVER的用户使用此链接服务器,则写用户名*/
'zhang40', --帐号(oracle)
'zhang40' --密码
exec sp_serveroption 'OraclePolice','rpc out','true'
exec sp_serveroption 'OraclePolice','rpc','true'
--这两个是打开rpc,rpc out的,默认为False,打开后可以支持远程更改分布式事务。(如有分布式事务操作必须要设置)

3.就建好了链接服务器,已经可以通过它对oracle数据库进行查询,这里有两种查询方式
SELECT * FROM OraclePolice..ZHANG40.TUSER
OraclePolice..ZHANG40.TUSER
链接服务器别名..数据库名.表 
这种方式可以进行操作,优点是使用简单,一目了然,而缺点是性能太差,查询大数据量表很慢。效率太差。

SELECT * FROM openquery(OraclePolice,'SELECT * FROM TUSER')
经试验,这种查询方式速度几乎和在Oralce中一样快。并且我们可以将openquery() 当做表来用
insert into openquery(OraclePolice,'SELECT * FROM TABLE_TEST')
values();--向oracle数据表插入数据
SELECT * FROM openquery(OraclePolice,'SELECT * FROM TABLE_TEST')
where TEST_NAME='' (TEST_NAME为TABLE_TEST表中的字段)
故推荐这种查询方式。

猜你喜欢

转载自blog.csdn.net/luchi880/article/details/86492358