隐藏

请问如何把table1和table2联合查询

发布:2014/11/11 17:26:38作者:管理员 来源:本站 浏览次数:1507

有两个数据库服务器,server1,server2,SERVER1有table1表,登陆用户是sa,密码是1,server2有table2表,登陆用户是sa,密码是1,请问如何把table1和table2联合查询?


select *
from openrowset('sqloledb','server1';'sa';'1',库名..table1) a,
openrowset('sqloledb','server2';'sa';'1',库名..table2) b

OPENROWSET

A. 使用有 SELECT 的OPENROWSET 與 Microsoft OLE DB Provider for SQL Server
以下範例使用 Microsoft OLE DB Provider for SQL Server,以存取命名為 seattle1 的遠端伺服器 上 pubs 資料庫的 authors 資料表。從 datasource、user_id 與 password 初始化提供者,且使 用 SELECT 來定義傳回的資料列集。

USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
   'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a
GO

B. 使用有物件的 OPENROWSET 與 OLE DB Provider for ODBC
以下範例使用 OLE DB Provider for ODBC 與 SQL Server ODBC 驅動程式,來存取命名為 seattle1 的 遠端伺服器上 pubs 資料庫的 authors 資料表。以 ODBC 提供者使用的 ODBC 語法指定之 provider_string 來初 始化提供者,並使用 catalog.schema.object 語法來定義傳回的資料列集。

USE pubs
GO
SELECT a.*
FROM OPENROWSET('MSDASQL',
   'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
   pubs.dbo.authors) AS a
ORDER BY a.au_lname, a.au_fname
GO

--访问不同电脑上的数据库(远程只要联好网就一样)

--如果经常访问或数据量大,建议用链接服务器

--创建链接服务器
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

--查询示例
select * from srv_lnk.数据库名.dbo.表名

--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名

go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'


--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)


--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)