聯接遠程務器進行操作

/*
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 

你可能感兴趣的:(操作)