/*

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 ai聯接遠程務器進行操作_sqlmytable 

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_ex聯接遠程務器進行操作_sqlsheet3$ 

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 


申明

非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

博文欢迎转载,但请给出原文连接。