/*
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
mytable
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
sheet3$
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