Oracle&SQLServer中实现跨库查询

1、在SQLServer中链接另外一个SQLServer库数据html

在SQL中,要想在本地库中查询另外一个数据库中的数据表时,能够建立一个连接服务器:sql

EXEC master.dbo.sp_addlinkedserver @server = N'别名', @srvproduct=N'库名',@provider=N'SQLOLEDB', @datasrc=N'服务器地址'数据库

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'别名', @locallogin = NULL ,@useself = N'False', @rmtuser = N'用户名', @rmtpassword = N'密码'服务器

建立完后,就能够经过“Select * from别名.库名.dbo.表名”来查询了。oracle

或者也能够手工建立:ide

Oracle&SQLServer中实现跨库查询



Oracle&SQLServer中实现跨库查询



 

 

 

 

2、在Oracle中链接另外一个Oracle库数据工具

在Oracle中,其实也相似,要链接到其余库时,也须要建立一个相似这样的链接:sqlserver

create database link 别名 connect to 模式名(用户名) identified by "密码" using 'TNS名';开发工具

注意:这里面的TNS名就是你须要链接的另外一个库的TNS名,并且是必需是在你当前链接的库的服务器端所配置的TNS名。url

建立完后,咱们也就能够访问了:“Select * from表名@别名”

若是使用的是PL/SQL开发工具,那么咱们也能够直接在工具里建立:

Oracle&SQLServer中实现跨库查询



Oracle&SQLServer中实现跨库查询



 

 

 

 

3、在SQL Server中链接Oracle数据

一样,也建立一个数据库链接便可,这时咱们采用Ole DB方式链接数据库:

EXEC master.dbo.sp_addlinkedserver @server = N'别名', @srvproduct=N'库名',@provider=N'MSDAORA', @datasrc=N'TNS名'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'别名', @locallogin = NULL ,@useself = N'False', @rmtuser = N'模式名', @rmtpassword = N'密码'

注意:这里面的TNS名,是在该SQL Server器端所配置的TNS名,不是在客户端本地哦。

建立好了后,使用“select * from openquery(别名,'select * from模式名.表名”来执行查询。

要链接到其余类型的数据库时,其实方式也类同,只要用相应的provider来链接便可。

 

4、在Oracle中链接SQL Server数据

在oracle中链接SQLServer也很相似,建立一个DBLink,但问题是,建立DBLink里,里面用的TNS名称都是链接到Oracle的,没有配置链接到SQL Server中的。

因而想到采用Oracle中的透明网关来实现,首先在Oracle的安装名中装上,Oracle Net Services和Oracle Transparent Gateways, 并在此项下选择Oracle Transparent Gateway for Microsoft SQL Server。

配置透明网关,编辑%ORACLE_HOME%/tg4msql/admin/init%ORACLE_SID%.ora, 该文件包含了TG for SQL Server的配置信息, 其中%ORACLE_SID%是给TG的"SID", 默认为tg4msql. 修改文件中的行HS_FDS_CONNECT_INFO="SERVER=SQL服务器地址;DATABASE=库名"。

而后建立监听器:编辑%ORACLE_HOME%/network/admin/listener.ora, 编辑对应listener的SID_LIST:

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC= 
(SID_NAME=%ORACLE_SID%)
(ORACLE_HOME=oracle_home_directory)
(PROGRAM=tg4msql)
)
)

其中%ORACLE_SID%为第二布中设置的SID, 默认值为tg4msql. 修改listener.ora文件后需重启listener使修改生效.

最后就能够配置TNS名了,若是直接修改Tnsname.ora文件的话,添加的格式是:

TNS名=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=sqlserver)(PORT=1521))
(CONNECT_DATA=(SID=网关ID))
(HS=OK))

这样,TNS名后就能够建立DB Links,而后查询的方式与前面一至。

相关文章
相关标签/搜索