跨服务器查询sql (摘要)

首先推荐一个神作:http://www.cnblogs.com/daniel206/archive/2008/01/16/1041748.html 

大神比较详细了。而且条理很清晰。

然后摘录一些其他的,补充一下上文。

select * from OPENDATASOURCE( 
'SQLOLEDB', 
'Data Source=远程ip;User ID=sa;Password=密码' 
).库名.dbo.表名 

insert 本地库名..表名 select * from OPENDATASOURCE( 
'SQLOLEDB', 
'Data Source=远程ip;User ID=sa;Password=密码' 
).库名.dbo.表名 

或使用联结服务器: 
--创建linkServer 
exec sp_addlinkedserver '别名','','SQLOLEDB','192.168.2.5' 

--登陆linkServer 
exec sp_addlinkedsrvlogin '别名','false',null,'sa','1234' 

--查询 
select * from 别名.库名.dbo.表名 

--以后不再使用时删除链接服务器 
exec sp_dropserver '别名','droplogins' 
详细出处参考:http://www.jb51.net/article/20624.htm

据说,openrowset 使用,还需要酱紫:

1.开通分布式查询权限
1. exec sp_configure 'show advanced options',1   
2. reconfigure  
3. exec sp_configure 'Ad Hoc Distributed Queries',1   
4. reconfigure 
2.查询
1. select a.ProjCode as '楼盘编号',b.projname as '楼盘名称',count(1) as '房源量' from   
2.  openrowset( 'SQLOLEDB ', 'IP地址(服务器名)'; '用户名'; '密码',[数据库名].[dbo].[表名]) a  
3.  , openrowset( 'SQLOLEDB ', 'IP地址(服务器名)'; '用户名'; '密码',[数据库名].[dbo].[表名]) b  
4.  where a.ProjCode=b.newcode GROUP by   a.ProjCode ,b.projname order by  count(1) desc 
3.然后换城市,只需要改IP、 库名和表名了。
4.关闭
1. exec sp_configure 'Ad Hoc Distributed Queries',0   
2. reconfigure   
3. exec sp_configure 'show advanced options',0   
4. reconfigure 

好了,先就这些了。

原文地址:https://www.cnblogs.com/LL-723/p/3520414.html