MSSQL linkedServer和OpenDataSource比较

在MSSQL中, 对远程的数据库进行访问有几种方式, 其中 LinkedServer是大家最常使用的方式。

创建好linkedserver之后,对远程数据库实例的访问,就像访问本地的数据库一样, 直接 使用[linkedserver_name].[db_name].[owner].[table_name]来访问。

这样的话,就不用每次都提供远程机器的用户名和密码。


但是linkedserver也有潜在的问题, 就是linked ring的问题。

假设有数据库A 在机器A上, 数据库B在机器B上, 你可以建立从A-》B的linksed Server, 也可以建立从B-》A的LinkedServer。 一般情况下,还好。

但是当你想使用link server 来做delete 动作的时候,就要特别的当心了。  

笔者就曾遇到过, 用link server从A-》B对B进行delete操作的时候,发现 A中的数据不见了, 当时觉得很纳闷。

查log发现 是B有一个对A的linked Server, 笔者要删除的动作引发了从B到A的删除。 这个是一开始没有想到 的。

这种情况在接手比较老的项目中可能存在。 



除了linked Server, 我们还可以使用opendatasource来访问。

OPENDATASOURCE('SQLNCLI','Data Source=machine_host;User ID=name;Password=*******').[db_name].[owner].[table_name]


这两个之间哪一个更好呢?

1)  Linked Server 不需要开advanced Option, 但是OpenDataSource需要启用“Ad Hoc Distributed Queries”。

2) Linked Server只要创建一次, 就可以随意访问, 但是OpenDataSource每次都要提供密码。

3)OpenDataSource的性能比LinkedServer差一点。 LinkedServer适合访问比较频繁的情况下, 而OpenDataSource主要用来进行次数很少的访问。


两者之间更多的区别,请参考 http://msdn.microsoft.com/en-us/library/ms179856.aspx,  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值