程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 通過一條sql語句訪問不同數據庫服務器中的數據庫對象的方法

通過一條sql語句訪問不同數據庫服務器中的數據庫對象的方法

編輯:關於SqlServer

在我們做數據庫程序開發的時候,經常會遇到這種情況:需要將一個數據庫服務器中的數據導入到另一個數據庫服務器的表中。通常我們會使用這種方法:先把一個數據庫中的數據取出來放到某出,然後再把這些數據一條條插入到目的數據庫中,這種方法效率較低,寫起程序來也很繁瑣,容易出錯。另外一種方法是使用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'

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

只要我們先執行遠程數據庫服務器注冊和登錄方法注冊,然後就可以把遠程數據庫當成本地數據庫使用了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved