SQLServer 跨服务器查询的两个办法

网上搜了跨服务器查询的办法,大概就是Linked Server(预存连接方式并保证连接能力)和OpenDataSource(写在语句中,可移植性强)。根据使用函数的不同,性能差别显而易见。。。虽然很简单,但是lz被坑了几天才发现,惭愧。

1. Linked Server

非常实用的功能,添加方法如果有问题可以单独联系lz,不是很复杂的~

使用方法一:

1 select * from LinkedServer1.table1

但是这个办法的执行却是和OpenDataSouce一样的,就是把对方服务器上所有相关表的数据都下载到本地再执行。相比之下,使用OpenQuery,可以将query的执行放在对方服务器上执行,而传输的内容只有查询结果,可以大大节省传输方面的消耗。尤其是在涉及多个对方server的表时!

★使用方法二:

select * from
OpenQuery(LinkedServer1,‘select * from table1 join table2‘)

2. OpenDataSource

和上述类似的也有一个相同功能,可以直接返回查询结果的函数,OpenRowSet。

关于他们的使用可以参见下面的这位同学写的,很详细。

http://www.cnblogs.com/OpenCoder/archive/2010/03/18/1689321.html

Anyway,希望每位需要跨服务器查询的SQLer都可以避免走弯路吧。谢谢。

时间: 2024-10-31 04:48:06

SQLServer 跨服务器查询的两个办法的相关文章

SqlServer 跨服务器查询

服务器A,服务器B select * from(   select a.ID as Hid,a.subjectid as Hsubjectid,b.ID as Lid,b.subjectid as Lsubjectid,c.* FROM OPENROWSET('MSDASQL',   'DRIVER={SQL Server};SERVER=A;UID=sa;PWD=***',   dbName) as a  left join OPENROWSET('MSDASQL',   'DRIVER={S

开启MSSQLServer跨服务器查询功能

首先在MSSQL客户端中进行如下图文操作配置 其次使用脚本进行操作配置 ---开启SQLServer 跨服务器查询功能 exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure --关闭SQLServer 跨服务器查询功能 exec sp_configure 'Ad Hoc Distributed Queries',0 r

缓存一致性和跨服务器查询的数据异构解决方案canal

当你的项目数据量上去了之后,通常会遇到两种情况,第一种情况应是最大可能的使用cache来对抗上层的高并发,第二种情况同样也是需要使用分库 分表对抗上层的高并发...逼逼逼起来容易,做起来并不那么乐观,由此引入的问题,不见得你有好的解决方案,下面就具体分享下. 一:尽可能的使用Cache 比如在我们的千人千面系统中,会针对商品,订单等维度为某一个商家店铺自动化建立大约400个数据模型,然后买家在淘宝下订单之后,淘宝会将订单推 送过来,订单会在400个模型中兜一圈,从而推送更贴切符合该买家行为习惯的

数据异构解决方案缓存一致性和跨服务器查询

缓存一致性和跨服务器查询的数据异构解决方案canal 当你的项目数据量上去了之后,通常会遇到两种情况,第一种情况应是最大可能的使用cache来对抗上层的高并发,第二种情况同样也是需要使用分库 分表对抗上层的高并发...逼逼逼起来容易,做起来并不那么乐观,由此引入的问题,不见得你有好的解决方案,下面就具体分享下. 一:尽可能的使用Cache 比如在我们的千人千面系统中,会针对商品,订单等维度为某一个商家店铺自动化建立大约400个数据模型,然后买家在淘宝下订单之后,淘宝会将订单推 送过来,订单会在4

sql serve 跨服务器查询数据方法

 今天在做sql server 的数据查询时,需要用到跨服务器连接,在这里记录一下,如何在sql server 中,使用跨服务器查询的方法,有以下步骤. /* 创建中间数据库链接 exec sp_addlinkedserver 'MiddleData', ' ', 'SQLOLEDB', '数据库连接实例,或者IP' exec sp_addlinkedsrvlogin 'MiddleData', 'false',null, '数据库连接帐号', '数据库连接密码' */ 创建好连接之后,就可

跨服务器查询sql语句样例(转)

若2个数据库在同一台机器上: insert into DataBase_A..Table1(col1,col2,col3----) select col11,col22,col33-- from DataBase_B..Table11 若不在同一台机器上,则是本文要讲的内容: ----------------------------------------------------------------------------------------- 跨服务器查询sql语句样例 INSERT

SQL SERVER 数据库跨服务器查询插入数据

SQLserver的分布式查询:如果一个项目需要二至多台服务器,而我们又必须从几台服务器中将数据取出来,这就必须用分布式查询!在这里有两个概念:本地数据源.远程数据源!本地数据源指的是单个服务器上的数据而远程数据源指的是另一个SQL实例上的数据.如何跨服务器取数呢?一.如果经常访问或数据量大,建议用链接服务器--创建链接服务器exec sp_addlinkedserver ''srv_lnk'','''',''SQLOLEDB'',''远程服务器名或ip地址''exec sp_addlinked

SqlServer跨库查询

由于业务的拆分,数据库拆分为两种作用: 汇总数据库(Master,头节点数据库), 子节点数据库(Compute Node,计算子节点数据库) 这样,就设计到子节点访问头节点数据库中的某张汇总表,这种表的记录一般在几,到几十万行左右,目前适合做跨库查询. 跨库查询目前分为两种: 通过sp_addlinkedserver建立链接服务器 没有链接服务器时,可以使用openrowset或者opendatasource函数 在部署时,需要在SQLSERVER外围应用配置器中启用OpenRowSet和Op

SQLServer跨库查询--分布式查询

出处:http://www.cnblogs.com/doosmile/archive/2012/03/16/2400646.html --用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) 在跨库查询时需要启用Ad Hoc Distributed Queries启用Ad Hoc Distri