sql中连接两个不同的数据库(A在同一个服务器,B不在一个服务器)
(A)同一服务器上连接不同的数据库
DBF.dbo.Table_NAME
DBF 数据库名
dbo 是必须写的
Table_NAME 连接的表名
例 1:
select a.k_teacherid ,a.b_cystatus,b.k_name,c.school_name
from b_shouinform a,k_teacher b,charge_kindergarten.dbo.DIC_SCHOOL_NAME c
where c.school_code=b.k_schoolid and a.k_teacherid=b.k_teacherid and b_iid='62'
例 2:
select * from charge_kindergarten.dbo.DIC_SCHOOL_NAME a,kinder.dbo.k_teacher b
where a.school_code=b.k_schoolid
(B)不同服务器连接
lssjx 当前服务器上表
select * from lssjx where saveid in
(
select user_id from opendatasource
('SQLOLEDB',
'server=192.168.0.2;uid=sa;pwd=;database=zxx').zxx.dbo.teach
)
//////////////////////////服务器上ip---server=192.168.0.2
///////所要连接的数据库-------database=zxx
,(zxx.dbo.teach 数据库中的teach表)
例3
exec sp_addlinkedserver
@server ='Server',--链接服务器名,这个可以改简单点,比如Server,引用也方便,这个名字可以随便取
@srvproduct = '',
@provider = N'SQLOLEDB',
@datasrc = N'192.168.0.111',--远程服务器名称
@catalog = N'DataBase'--远程数据库的名称
go
--创建远程登录
exec sp_addlinkedsrvlogin
@rmtsrvname = 'Server',
@useself='False',
@rmtuser ='sa', --远程服务器登录名称
@rmtpassword ='密码'
go
--试一下
select * from [Server].数据库.dbo.表
exec sp_dropserver 'Server','droplogins'