通過一條sql語句訪問不同資料庫的方法

2021-03-31 22:45:55 字數 942 閱讀 2248

通過一條sql語句訪問不同資料庫的方法

在我們做資料庫程式開發的時候,經常會遇到這種情況:需要將乙個資料庫伺服器中的資料匯入到另乙個資料庫伺服器的表中。通常我們會使用這種方法:先把乙個資料庫中的資料取出來放到某齣,然後再把這些資料一條條插入到目的資料庫中,這種方法效率較低,寫起程式來也很繁瑣,容易出錯。另外一種方法是使用bcp或bulk insert語句,將資料匯入到乙個檔案中,再從此檔案中匯出到目的資料庫,這種方法雖然效率稍高,但也有很多不如意的地方,單是在匯入時怎樣找到另外一台機器上的資料匯入檔案就很麻煩。

最方便的一種方法,我想也是效率最高的方法,應該是這樣:

比如有兩個資料庫伺服器:zl和ljw,裡面都有乙個資料庫taxitemp(也可以不同名),資料庫裡有乙個表,叫users,我們現在想把zl中的users資料匯入到ljw中,可以這樣寫sql語句(假設現在連線的是zl資料庫):

insert into ljw.taxitemp.dbo.users

select * from users

這樣,通過一條sql語句就完成了不同資料庫伺服器之間的資料複製。

有人會說,這種sql語句我也會寫,我也想到了,但是沒辦法執行。

的確,單純的這樣一條語句沒辦法執行,因為資料庫不知道ljw是什麼伺服器,也不知道怎樣登入,當然會報錯。

我們可以這樣解決註冊遠端資料庫伺服器和登入的問題:

註冊遠端資料庫伺服器:

exec sp_addlinkedserver 'ljw', n'sql server'

註冊遠端資料庫伺服器的登入方法:

exec sp_addlinkedsrvlogin 'ljw', 'false', null, 'sa', 'zz'

至於這兩個儲存過程的詳細用法,我就不多講了,大家看看幫助就明白了。

只要我們先執行遠端資料庫伺服器註冊和登入方法註冊,然後就可以把遠端資料庫當成本地資料庫使用了

一條SQL語句研究

現有 select from t where a in 5,3,2,1,8,9,30.假設 a 是主鍵,in裡面的引數是唯一的。現要求輸出的結果集按照 in 提供的引數順序排序。而不是按照a本身的排序規則排序?另 如果不要求使用臨時表或表變數,那麼又有什麼辦法實現。臨時表方案參卡 create ta...

sql語句ding 求一條sql語句

我理解你的問題是每乙個使用者id在乙個部門中所有的許可權,你給的資料好像不詳細,我新增了一些資料,你看看滿足需求不。sql with authority as 2 select 3029 kuid,205 krid,21 kdid from dual union all 3 select 3029 ...

一條sql 語句的優化

第二個版本 一條sql搞定,使用巢狀查詢,費時2 3分鐘 select a.indexid,c.title,c.createdtime,c.intro,d.picurl,e.src,e.size,e.info from mms content index a,mms index node b,mms...