SQL跨伺服器查詢

2021-05-22 22:38:55 字數 2945 閱讀 2922

sql跨伺服器查詢的二種實現方法:

select   *   from   opendatasource(  

'sqloledb',  

'data   source=遠端ip;user   id=sa;password=密碼'  

).庫名.dbo.表名  

insert   本地庫名..表名   select   *   from   opendatasource(  

'sqloledb',  

'data   source=遠端ip;user   id=sa;password=密碼'  

).庫名.dbo.表名  

或使用聯結伺服器:  

exec   sp_addlinkedserver   '別名','','msdasql',null,null,'driver=;server=遠端名;uid=使用者;pwd=密碼;'  

exec   sp_addlinkedsrvlogin     @rmtsrvname='別名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密碼'  

go  

然後你就可以如下:  

select   *   from   別名.庫名.dbo.表名  

insert   庫名.dbo.表名   select   *   from   別名.庫名.dbo.表名  

select   *   into   庫名.dbo.新錶名   from   別名.庫名.dbo.表名  

go sql跨伺服器查詢2008-12-22 13:53--跨伺服器查詢如下:

select a.*,b.stor_name

from openrowset('msdasql',

'driver=;server=tom;uid=sa;pwd=123',

pubs.dbo.authors) as a,stores b

order by a.au_lname, a.au_fname

--其中,tom為遠端伺服器名,stores 是本機資料庫pubs中的表

--需要注意的是若二個表中的記錄數目不同會導致某乙個表產生完全重複的行,

--得到的記錄集的行數為最長的那個表中的行數

如:insert into dbo.kqmx_200704

select *

from openrowset('msdasql',

'driver=;server=192.168.1.253;uid=sa;pwd=',

one.dbo.kqmx_200704)

另:連線遠端伺服器進行資料查詢時可以這麼做:select * from [**.**.**.**].test.dbo.t1

不過,不出意外的話會報錯:在 sysservers 中未能找到伺服器 '**.*.**.**'。請執行 sp_addlinkedserver 以將伺服器新增到 sysservers。

新增sysservers:exec   sp_addlinkedserver     'srv_lnk','','sqloledb','**.*.**.**'

再查詢:select * from srv_lnk.test.dbo.t1 (因為定義了「別名」,所以這兒「別名」)

除非兩個伺服器上的該使用者的密碼一樣,否則會報:使用者 '**' 登入失敗。

指定登入使用者:exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'ruser','rpwd' 

再查詢:select * from srv_lnk.test.dbo.t1,如果無意外的話就應該是成功的

sp_addlinkedserver

建立乙個鏈結的伺服器,使其允許對分布式的、針對 ole db 資料來源的異類查詢進行訪問。在使用 sp_addlinkedserver 建立鏈結的伺服器之後,此伺服器就可以執行分布式查詢。如果鏈結伺服器定義為 microsoft? sql server?,則可執行遠端儲存過程。

exec sp_droplinkedsrvlogin server,null

exec sp_dropserver server

exec sp_addlinkedserver

@server= 'server ',--被訪問的伺服器別名

@srvproduct= ' ',

@provider= 'sqloledb ',

@datasrc= '10.23.11.28,3342 ' --要訪問的伺服器

exec sp_addlinkedsrvlogin

'server ', --被訪問的伺服器別名

'false ',

null,

'la0001 ', --帳號

'aaaaaa ' --密碼

鏈結伺服器沒問題,在查詢分析器裡執行例如:select * from [192.168.0.119].fash.dbo.vwalluser沒問題.

但如果想建立乙個簡單的儲存過程:

create procedure test as

set nocount on

set arithabort,concat_null_yields_null,quoted_identifier,ansi_nulls,ansi_padding,ansi_warnings on

set numeric_roundabort off

select * from [192.168.0.119].fash.dbo.vwalluser

go 錯誤7405:異類查詢要求為連線設定 ansi_nulls 和 ansi_warnings 選項。這將確保一致的查詢語義。請啟用這些選項,然後重新發出查詢。

解決辦法:

在儲存過程中加

set ansi_nulls on

set ansi_warnings on

set xact_abort on

sql跨伺服器查詢示例

sql跨伺服器查詢應該如何使用呢?下面的例子將會給您一些啟示,供您學習參考,希望可以使您對sql跨伺服器查詢有更深的認識。在寫到乙個sql 語句時,於由集團內部部門多,用到的系統也就多,當然資料庫的伺服器也多個了。在做車間車輛保養時,保養的材料的新增,必須和物資裡的名稱保持一致。但是物資系統的資料庫...

SQl 跨伺服器查詢語句

se程式設計客棧lect from opendatasource sqloledb data source 遠端ip user id sa password 密碼 庫名.dbo.表名 程式設計客棧 insert 本地庫名.表名 select from opendatasource sqloledb ...

跨伺服器查詢資訊的sql

跨伺服器查詢資訊的sql select from openrowset sqloledb 192.168.1.104 sa 123.com automonitordbv3 dbo samplingtsklist 在執行上面語句是可能會出現的問題是 sql server 阻止了對元件 ad hoc d...