跨服务器查询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 

好了,先就这些了。

你可能感兴趣的:(sql)