聯接遠程務器進行操作

/*
EMSC.DBO.SIS是一個外部數據庫的TABLE
sis_styles_b是本地的一個數據庫的表.
*/

select top 10 a.*,b.sis_styles_id from openrowset('MSDASQL',   'DRIVER={SQL Server};SERVER=255.255.255.255;UID=user_id;PWD=password',EMSC.dbo.sis)  as a
 
left join sis_styles_b b on a.sis_id=b.sis_id

EXEC sp_addlinkedserver 
    
@server = 'EM'--被访问的服务器别名
    @srvproduct = '',
    
@provider = 'MSDASQL',
    
@provstr = 'DRIVER={SQL Server};SERVER=192.168.9.1;UID=mscuser;PWD=;Database=emsc'
EXEC sp_addlinkedsrvlogin 
     
'EM'--被访问的服务器别名
     'false'
     
NULL
     
'mscuser'--帐号
     '' --密码

SELECT TOP 10  * FROM EM.EMSC.dbo.SIS  ORDER BY DOC_DATE DESC

sp_dropserver 
'EM','droplogins'--移除聯接


由于业务逻辑的多样性 
经常得在sql server中查询不同数据库中数据 
这就产生了分布式查询的需求 
现我将开发中遇到的几种查询总结如下:


1.access版本 

--建立连接服务器 
EXEC sp_addlinkedserver 
--要创建的链接服务器名称  
'ai',             
--产品名称               
'access',     
--OLE DB 字符 
'Microsoft.Jet.OLEDB.4.0',  
--数据源 
--
格式: 
--
 盘符:\路径\文件名 
--
 \\网络名\共享名\文件名  (网络版本) 
'd:\testdb\db.mdb' 
GO 


--创建链接服务器上远程登录之间的映射 
--
链接服务器默认设置为用登陆的上下文进行 
--
现在我们修改为连接链接服务器不需使用任何登录或密码 
exec sp_addlinkedsrvlogin 'ai','false' 
go 


--查询数据 
select * from aimytable 
go 


2.excel版本

--建立连接服务器 
EXEC sp_addlinkedserver 
--要创建的链接服务器名称  
'ai_ex',             
--产品名称               
'ex',     
--OLE DB 字符 
'Microsoft.Jet.OLEDB.4.0',  
--数据源 
--
格式: 
--
 盘符:\路径\文件名 
--
 \\网络名\共享名\文件名  (网络版本) 
'd:\testdb\mybook.xls' , 
null
--OLE DB 提供程序特定的连接字符串 
'Excel 5.0' 
GO 


----创建链接服务器上远程登录之间的映射 
--
链接服务器默认设置为用登陆的上下文进行 
--
现在我们修改为连接链接服务器不需使用任何登录或密码 
exec sp_addlinkedsrvlogin 'ai_ex','false' 
go 


--查询数据 
select * from ai_exsheet3$ 
go 


3.ms sql版本 

--建立连接服务器 
EXEC sp_addlinkedserver 
--要创建的链接服务器名称  
'ai_mssql',             
--产品名称               
'ms',     
--OLE DB 字符 
'SQLOLEDB',  
--数据源 
'218.204.111.111,3342' 
GO 


--创建链接服务器上远程登录之间的映射 
EXEC sp_addlinkedsrvlogin 
'ai_mssql'
'false'
NULL
--远程服务器的登陆用户名 
'zhangzhe'
--远程服务器的登陆密码 
'fish2231' 
go 


--查询数据 
select * from ai_mssql.pubs.dbo.jobs 
go 


--还有一个更简单的办法 
--
这种方式在链接服务器建立后,它是默认开放RPC的 

--建立连接服务器 
EXEC sp_addlinkedserver 
--要创建的链接服务器名称 
--
这里就用数据源作名称 
'218.204.111.111,3342'
'SQL Server' 
GO 


--创建链接服务器上远程登录之间的映射 
EXEC sp_addlinkedsrvlogin 
'218.204.111.111,3342'
'false'
NULL
--远程服务器的登陆用户名 
'zhangzhe'
--远程服务器的登陆密码 
'fish2231' 
go 


--查询数据 
select * from [218.204.253.131,3342].pubs.dbo.jobs 
go 


4.Oracle版本

--建立连接服务器 
EXEC sp_addlinkedserver 
--要创建的链接服务器名称  
'o'
--产品名称               
'Oracle'
--OLE DB 字符 
'MSDAORA'
--数据源 
'acc' 
GO 


--创建链接服务器上远程登录之间的映射 
EXEC sp_addlinkedsrvlogin 
'o'
'false'
NULL
--Oracle服务器的登陆用户名 
'F02M185'
--Oracle服务器的登陆密码 
'f02m185185' 
go 

--查询数据 
--
格式:LinkServer..Oracle用户名.表名 
--
注意用大写,因为在Oracle的数据字典中为大写 
select * from o..F02M185.AI 
go 




希望上面提到的知识对你有所提示 
当然欢迎交流和指正 

author:aierong 
blog:http:
//www.cnblogs.com/aierong 
email:aierong
@126.com 

posted @ 2008-09-10 17:28  Athrun  阅读(337)  评论(0编辑  收藏  举报