跨資料庫資料交流

2022-03-13 21:51:51 字數 2140 閱讀 6387

通常情況下,我們的crud操作都在單一資料庫中進行。但是,也可能會遇到需要進行跨資料交流的情況。對此,我以跨資料庫進行表的訪問為例,稍微總結了下。

一、同sql server

這個最簡單。直接在表名前加上"[資料庫名]."就可以了。

例:

select

*from

[destinationdbname

].dbo.destinationtablename

二、跨sql server

主要介紹兩種方法:

(一)通過鏈結伺服器

1.先執行系統儲存過程 sp_addlinkedserver :

exec

sp_addlinkedserver

@server='

destinationdbalias

',--

目標資料庫的別名,在連線並登入後,就可以用它來訪問資料

@srvproduct=''

,@provider='

sqloledb',

@datasrc='

destinationserverip\servername'--

通常用"ip\埠名"組成,如果伺服器上只裝了乙個mssql server,或者裝了多個ms sqlserver,但要訪問的是預設埠,就不用加埠名

2.再執行系統儲存過程 sp_addlinkedsrvlogin:

exec

sp_addlinkedsrvlogin

@rmtsrvname='

destinationdbalias

',--

注意這裡的名字應與第一步sp_addlinkedserver中@server值一致

@useself='

false',

@locallogin

=null

,@rmtuser='

username',

@rmtpassword='

password

'

3.現在,我們可以通過目標資料庫別名訪問資料:

例:

select

*from

[destinationdbalias

].dbo.destinationtablename

4.使用結束,不要忘了斷開與目標資料庫的連線:

exec

sp_dropserver

@server='

destinationdbalias

',--

注意這裡的名字應與第一步sp_addlinkedserver中@server值一致

@droplogins='

droplogins

'

(二)使用opendatasource/openrowset連線遠端伺服器

select

*from

opendatasource('

sqloledb

', --

provider_name

'data source=destinationserverip;user id=username;password=password'--

provider_string(datasource;user_id;password)

).[destinationdbalias

].dbo.destinationtablename

select

*from

openrowset('

sqloledb

',--

provider_name

'destinationserverip

';'username

';'password

',--

provider_string(datasource;user_id;password)

'select * from [destinationdbalias].dbo.destinationtablename

')--

query_string

函式openquery也能實現跨伺服器訪問資料,但它是基於已經建立鏈結伺服器的基礎上來操作的,應屬第一種方法,在此不再贅述。

跨資料庫查詢資料

今天要導資料,不幸的是要一台伺服器導到另一台伺服器上,於是乎就到上網查了一下怎麼進行跨伺服器資料庫查詢 方法一 1select from opendatasource 2 sqloledb 3 data source 遠端ip user id sa password 密碼 4 庫名.dbo.表名 於...

跨資料庫引擎 資料庫查詢

包含訪問 ole db 資料來源中的遠端資料所需的全部連線資訊。當訪問鏈結伺服器中的表時,這種方法是一種替代方法,並且是一種使用 ole db 連線並訪問遠端資料的一次性的 特殊的方法。可以在查詢的 from 子句中像引用表名那樣引用 openrowset 函式。依據 ole db 提供程式的能力,...

資料庫 mysql 跨庫訪問 資料庫跨庫訪問問題

sql server中的所有權鏈及其問題 沒有多少朋友對所有權鏈真的理解的。我自己有時候經常回過來看看這些資料,覺得還是很有意思的。下面的內容摘自微軟文件,介紹得比較好 簡而言之 1.如果在同乙個資料庫中,只要兩個物件的所有者是一樣的,那麼他們之間的訪問是不檢查訪問者身份的。例如乙個檢視和乙個表是屬...