分布式查詢

2022-04-04 04:46:09 字數 2845 閱讀 3576

sql server所謂的分布式查詢(distributed query)是能夠訪問存放在同一部計算機或不同計算機上的sql server 

或不同種類的資料來源, 從概念上來說分布式查詢與普通查詢區別 它需要連線多個mssql伺服器也就是具有多了資料來源. 

實現在伺服器跨域或跨伺服器訪問. 而這些查詢是否被使用完全看使用的需要. 

--檢視鏈結伺服器  

select  name , 

product , 

provider , 

data_source , 

query_timeout , 

lazy_schema_validation , 

is_remote_login_enabled , 

is_rpc_out_enabled 

from    sys.servers 

where   is_linked = 1

--建立鏈結伺服器  

exec sp_addlinkedserver   '666宿舍 ', ' ', 'sqloledb ', '192.168.77.251'  

exec sp_addlinkedsrvlogin '666宿舍 ', 'false ',null, 'sa ', '123456'  

--查詢示例  

select * from [666宿舍].ycmis.dbo.費用表  

--匯入示例  

select * into 新錶 from [666宿舍].ycmis.dbo.費用表  

--以後不再使用時刪除鏈結伺服器  

exec sp_dropserver  '666宿舍 ', 'droplogins '  

--連線遠端/區域網資料(openrowset/openquery/opendatasource)  

--sql server 阻止了對元件 'ad hoc distributed queries'  

exec sp_configure 'show advanced options',1

reconfigure 

exec sp_configure 'ad hoc distributed queries',1

reconfigure 

--    使用完成後,關閉ad hoc distributed queries: 

exec sp_configure 'ad hoc distributed queries',0

reconfigure 

exec sp_configure 'show advanced options',0

reconfigure 

--1、openrowset  

--查詢示例  

select * from openrowset( 'sqloledb ', '192.168.77.251 '; 'sa '; '123456',ycmis.dbo.費用表)  

--生成本地表  

select * into 表 from openrowset( 'sqloledb ', '192.168.77.251 '; 'sa '; '123456',ycmis.dbo.費用表)  

--把本地表匯入遠端表  

insert openrowset( 'sqloledb ', '192.168.77.251 '; 'sa'; '123456',ycmis.dbo.表名)  

select *from 本地表  

--更新本地表  

update b  

set b.列a=a.列a  

from openrowset( 'sqloledb ', '192.168.77.251 '; 'sa '; '123456',ycmis.dbo.費用表)  as a inner join 本地表 b  

on a.column1=b.column1  

--openquery用法需要建立乙個連線  

--首先建立乙個連線建立鏈結伺服器  

exec sp_addlinkedserver   '666宿舍 ', ' ', 'sqloledb ', '192.168.77.251'  

--查詢  

select *  

from openquery([666宿舍],  'select *  from ycmis.dbo.費用表 ')  

--把本地表匯入遠端表  

insert openquery([666宿舍],  'select *  from ycmis.dbo.遠端表 ')  

select * from 本地表  

--更新本地表  

update b  

set b.列b=a.列b  

from openquery([666宿舍],  'select *  from ycmis.dbo.費用表 ')  as a   

inner join 本地表 b on a.列a=b.列a  

--3、opendatasource/openrowset  

select   *  

from   opendatasource( 'sqloledb ',  'data source=192.168.77.251;user id=sa;password=123456' ).ycmis.dbo.費用表  

--把本地表匯入遠端表  

insert opendatasource( 'sqloledb ',  'data source=192.168.77.251;user id=sa;password=123456' ).ycmis.dbo.費用表  

select * from 本地表 

分布式查詢

sql server所謂的分布式查詢 distributed query 是能夠訪問存放在同一部計算機或不同計算機上的sql server 或不同種類的資料來源,從概念上來說分布式查詢與普通查詢區別 它需要連線多個mssql伺服器也就是具有多了資料來源.實現在伺服器跨域或跨伺服器訪問.而這些查詢是否...

分布式查詢

exec sp addlinkedserver server servera srvproduct provider sqloledb datasrc 192.168.0.28 exec sp addlinkedsrvlogin rmtsrvname servera useself false rm...

分布式查詢 opendatasource

insert into t gene sy pres pres name,address,byrs,edus id,gdrxnl,kinderclass id,kindertype id select pres name,address,cast byrs as numeric cast edus ...