SQL Server链接其他数据库服务器的方法

在实际应用中经常碰到要对两个数据库(不在同一台主机上)进行关联操作,在Oracle中提供了这种机制,可以链接其他主机上的Oracle数据库。
同样的在SQL Server2005中也可以链接到其他的SQL Server数据库,并且通过Ole DB还可以链接到Oracle、Sybase等其他不同的数据库,方便用户的操作和维护。

在Microsoft SQL Server Management Studio的工具中提供了图形界面的操作:

 不过其中的一些参数的填写比较麻烦,我这里就以链接SQL Server和Oracle为例说一下
(命令的方式,只列出最简单的命令,对一些可有可无的属性的设置我把它去掉了)

1、链接SQL Server 数据库
这个是相对简单的。参见如下的sql语句
None.gif USE [master]
None.gifGO
None.gifEXEC master.dbo.sp_addlinkedserver @server 
=  N ' DBSERVER ' , @srvproduct = N ' SQL Server '
None.gifGO
None.gifUSE [master]
None.gifGO
None.gifEXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname 
=  N ' DBSERVER ' , @locallogin  =  N ' sa ' , @useself  =  N ' False ' , @rmtuser  =  N ' sa ' , @rmtpassword  =  N ' 1 '
None.gifGO
主要就是调用了两个存储过程:
sp_addlinkedserver是加入数据库链接,其中server的参数是另外一台SQL Server服务器的名称
sp_addlinkedsrvlogin是加入对应的远程数据库的用户名,rmtuser和rmtpassword是远程数据库的用户名和密码

下面就可以直接在本地查询远程数据库的表了:
None.gif  select  *  from [DBSERVER].[helpdesk].[dbo].[Messages];

2、链接Oracle数据库
要链接Oracle数据库,首先要在本地安装Oracle的客户端,并且配置好Oracle的别名(别名的配置我这里就不多说了,很简单的)
然后同样的调用上面的两个存储过程:
None.gif USE [master]
None.gifGO
None.gifEXEC master.dbo.sp_addlinkedserver @server 
=  N ' GSPRING ' , @srvproduct = N ' Oracle ' , @provider = N ' MSDAORA ' , @datasrc = N ' gspring '
None.gifGO
None.gifUSE [master]
None.gifGO
None.gifEXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname 
=  N ' GSPRING ' , @locallogin  =  N ' sa ' , @useself  =  N ' False ' , @rmtuser  =  N ' user1 ' , @rmtpassword  =  N ' 1 '
None.gifGO
其中server是链接数据库的名称,datasrc是本地配置的oracle的别名。

下面就可以直接在本地查询远程oracle数据库的表了:
None.gif select  *  from [GSPRING]..[user1].[table1];
其中user1是table1表的owner
要注意的就是SqlServer中访问一张表的全路径是四层,那么访问oracle时对于没有的要用一个空的.代替

其他:
1、本地配置的所有链接可以在sysservers表中查到:
None.gif select  *  from sys.sysservers;

2、访问远程数据库表时也可以先在本地建一个同义词,然后就可以像在本地一样的访问了:
None.gif USE [master]
None.gifGO
None.gifCREATE SYNONYM [dbo].[linktable] FOR [DBSERVER].[helpdesk].[dbo].[Messages];
None.gifGO
None.gif
None.gifselect 
*  from linktable;

3、在配置oracle时如果出现其他错误,请参见微软的解决方案(我配置过程中一个问题都没有出现,难道是我RP太好了 03.gif): http://support.microsoft.com/kb/280106/zh-cn
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值