分布式查詢

2022-02-28 14:03:47 字數 3935 閱讀 6982

exec sp_addlinkedserver @server='servera', @srvproduct='', @provider='sqloledb', @datasrc='192.168.0.28'

exec sp_addlinkedsrvlogin @rmtsrvname='servera', @useself='false', @rmtuser ='sa',@rmtpassword = 'aaa'

exec sp_serveroption 'servera', 'lazy schema validation', 'true'

如何在sql   server中建立與其它sql   server的連線   

建立一台名為   server2   的鏈結伺服器:   

use   master   

exec   sp_addlinkedserver   server2,nsql   server   

建立乙個對映,使用帳號   sa   和密碼   password   連線到鏈結伺服器   server2:   

exec   sp_addlinkedsrvlogin   server2,   false,   null,   sa,   password   

查詢資料:   

select   *   from   server2.dbname.dbo.tablename   

--如果經常訪問或資料量大,建議用鏈結伺服器   

--建立鏈結伺服器   

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

由於業務邏輯的多樣性

經常得在sql server中查詢不同資料庫中資料

這就產生了分布式查詢的需求

現我將開發中遇到的幾種查詢總結如下:

1.access版本

--建立連線伺服器

exec sp_addlinkedserver

--要建立的鏈結伺服器名稱  

'ai',             

--產品名稱               

'access',     

--ole db 字元

'microsoft.jet.oledb.4.0',  

--資料來源

--格式:

-- 碟符:\路徑\檔名

-- \\網路名\共享名\檔名  (網路版本)

'd:\testdb\db.mdb'

go --建立鏈結伺服器上遠端登入之間的對映

--鏈結伺服器預設設定為用登陸的上下文進行

--現在我們修改為連線鏈結伺服器不需使用任何登入或密碼

exec sp_addlinkedsrvlogin 'ai','false'

go --查詢資料

select * from ai...mytable

go 2.excel版本

--建立連線伺服器

exec sp_addlinkedserver

--要建立的鏈結伺服器名稱  

'ai_ex',             

--產品名稱               

'ex',     

--ole db 字元

'microsoft.jet.oledb.4.0',  

--資料來源

--格式:

-- 碟符:\路徑\檔名

-- \\網路名\共享名\檔名  (網路版本)

'd:\testdb\mybook.xls' ,

null,

--ole db 提供程式特定的連線字串

'excel 5.0'

go ----建立鏈結伺服器上遠端登入之間的對映

--鏈結伺服器預設設定為用登陸的上下文進行

--現在我們修改為連線鏈結伺服器不需使用任何登入或密碼

exec sp_addlinkedsrvlogin 'ai_ex','false'

go --查詢資料

select * from ai_ex...sheet3$

go 3.ms sql版本

--建立連線伺服器

exec sp_addlinkedserver

--要建立的鏈結伺服器名稱  

'ai_mssql',             

--產品名稱               

'ms',     

--ole db 字元

'sqloledb',  

--資料來源

'218.204.111.111,3342'

go --建立鏈結伺服器上遠端登入之間的對映

exec sp_addlinkedsrvlogin

'ai_mssql',

'false',

null,

--遠端伺服器的登陸使用者名稱

'zhangzhe',

--遠端伺服器的登陸密碼

'fish2231'

go --查詢資料

select * from ai_mssql.pubs.dbo.jobs

go --還有乙個更簡單的辦法

--這種方式在鏈結伺服器建立後,它是預設開放rpc的

--建立連線伺服器

exec sp_addlinkedserver

--要建立的鏈結伺服器名稱

--這裡就用資料來源作名稱

'218.204.111.111,3342',

'sql server'

go --建立鏈結伺服器上遠端登入之間的對映

exec sp_addlinkedsrvlogin

'218.204.111.111,3342',

'false',

null,

--遠端伺服器的登陸使用者名稱

'zhangzhe',

--遠端伺服器的登陸密碼

'fish2231'

go --查詢資料

select * from [218.204.253.131,3342].pubs.dbo.jobs

go 4.oracle版本

--建立連線伺服器

exec sp_addlinkedserver

--要建立的鏈結伺服器名稱  

'o',

--產品名稱               

'oracle',

--ole db 字元

'msdaora',

--資料來源

'acc'

go --建立鏈結伺服器上遠端登入之間的對映

exec sp_addlinkedsrvlogin

'o',

'false',

null,

--oracle伺服器的登陸使用者名稱

'f02m185',

--oracle伺服器的登陸密碼

'f02m185185'

go --查詢資料

--格式:linkserver..oracle使用者名稱.表名

--注意用大寫,因為在oracle的資料字典中為大寫

select * from o..f02m185.ai

go

分布式查詢

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

分布式查詢

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

分布式查詢 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 ...