SQL SERVER跨本地数据库查询链接

当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的DBLINK,通过DBLINK本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

一、 创建DBLINK(我们这里已图文的形式展现简单点)

1、登录要链接的数据库

        

2、点击 服务对象-》链接服务器然后左击

3、点击现键链接服务器

 

4、根据需求设置被链接服务器地址(一般情况下是IP地址)、选择SQL SERVER 然后点击安全性

5、选择此安全上下文链接 并输入被链接服务器的 数据库账号与密码点击确定即可。

6、设置好后刷新就可以看见我们新建立的接口了。

 

 前面的定义已经说明,通过DBLINK本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

二、示范查询

以本地Customers表和远程数据库访问接口里的SQL_Road数据库下的 ook表

SELECT * FROM Customers c 
JOIN [远程数据库地址].SQL_Road.dbo.Orders o 
ON c.客户ID=o.客户ID

三、代码创建DBLINK链接

EXEC master.dbo.sp_addlinkedserver 
@server = '远程数据库地址',
@srvproduct='SQL Server' 
EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname='远程数据库地址', 
@useself='False', 
@locallogin=NULL, 
@rmtuser='账号', 
@rmtpassword='密码' Go

四、我写的k3在云星空查询的案例

select
k3.FNumber  as 客户代码  ,
SUM(k.FEndBalance) 余额
 from(
 select r.FAccountID,r.FDetailID,SUM(FEndBalance) as FEndBalance
from (
select u1.FAccountID,u1.FDetailID,u1.FEndBalance*t1.FDC as FEndBalance
from  [SQL].AIS.dbo.t_Balance  u1 
inner join [SQL].AIS2.dbo. t_Account t1 on u1.FAccountID=t1.FAccountID
where u1.FAccountID in 
(select a.FAccountID from  [SQL].AIS2.dbo.t_Account a inner join [SQL].AIS2.dbo.t_ItemDetail b on a.FDetailID=b.FDetailID and b.F1<>0)
and  FYear=(select FValue from [SQL].AIS.dbo.t_SystemProfile where Fkey='CurrentYear' and FCategory='GL') and FPeriod=(select FValue from [SQLA].AIS.dbo.t_SystemProfile where Fkey='CurrentPeriod'
and FCategory='GL') and u1.FCurrencyID=0 and u1.FDetailID<>0
union all
select t1.FAccountID,t1.FDetailID,(CASE WHEN t1.FDC=1 THEN 1 ELSE -1 END)*FAmount*t2.FDC  as FEndBalance from [SQLAG].AIS.dbo.t_Voucher u1
inner join  [SQL].AI.dbo.t_VoucherEntry t1 on u1.FVoucherID=t1.FVoucherID
inner join [SQL].AIS.dbo. t_Account t2 on t2.FAccountID=t1.FAccountID 
where t1.FAccountID in (select a.FAccountID from  [SQL].AIS20080326210553.dbo.t_Account a inner join [SQL].AIS.dbo. t_ItemDetail b on a.FDetailID=b.FDetailID and b.F1<>0)
and u1.FPosted=0) r group by r.FAccountID,r.FDetailID) k
inner join [SQL].AIS.dbo.t_ItemDetail k1 on k1.FDetailID=k.FDetailID
inner join [SQL].AIS.dbo.t_Account k2  on k2.FAccountID=k.FAccountID AND  k2.FNumber LIKE '1122.%'
inner join [SQL].AIS.dbo.t_Item k3 on k3.FItemID=k1.F1
WHERE k.FEndBalance<>0 and K3.FNumber in ('01.01',
'01.01.001',
'01.01.009',
'01.01.005',
'01.01.004')
group by k3.FNumber

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值