有两个数据库服务器,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.表名)
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有