關注公眾號:SQL資料庫開發,了解更多SQL高級知識

DBLINK的定義

當我們要跨本地資料庫,訪問另外一個資料庫表中的數據時,本地資料庫中就必須要創建遠程資料庫的DBLINK,通過DBLINK本地資料庫可以像訪問本地資料庫一樣訪問遠程資料庫表中的數據。

創建DBLINK的語法

定義DBLINK類型

EXEC master.dbo.sp_addlinkedserver

@server = 遠程IP地址, @srvproduct=DBLINK類型(默認SQL Server)

定義DBLINK連接屬性

EXEC master.dbo.sp_addlinkedsrvlogin

@rmtsrvname=遠程IP地址,@useself=False,@locallogin=NULL,@rmtuser=遠程資料庫用戶名,

@rmtpassword=遠程資料庫密碼

以上兩步要一起執行才能生成DBLINK連接。

創建DBLINK連接示例

本地資料庫IP地址是192.169.0.35,已知區域網有一台IP地址為192.169.0.39的資料庫伺服器,其賬戶和密碼分別是sa和!QAZ1234,那麼我們應該這樣創建DBLINK連接:

USE master
GO

EXEC master.dbo.sp_addlinkedserver
@server = 192.169.0.39,
@srvproduct=SQL Server

EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=192.169.0.39,
@useself=False,
@locallogin=NULL,
@rmtuser=sa,
@rmtpassword=!QAZ1234
Go

執行完後我們會看到在SSMS的伺服器對象下面有一個創建好的DBLINK連接,如下圖:

DBLINK的作用

前面的定義已經說明,通過DBLINK本地資料庫可以像訪問本地資料庫一樣訪問遠程資料庫表中的數據。

DBLINK示例

以本地Customers表和遠程資料庫192.169.0.39里SQL_Road資料庫下的Orders表為例

Customers表

遠程資料庫中的Orders表

我們想用本地的Customers表關聯遠程資料庫192.169.0.39里SQL_Road資料庫下的Orders表裡的數據,可以這樣寫SQL:

SELECT c.姓名,o.訂單日期 FROM Customers c
JOIN [192.169.0.38].SQL_Road.dbo.Orders o ON c.客戶ID=o.客戶ID

結果如下:

這樣我們就將本來隔絕的兩個表通過DBLINK關聯上了。

刪除DBLINK

當我們不需要DBLINK的時候,可以通過以下方式進行刪除

EXEC master.dbo.sp_dropserver
@server=192.169.0.39,
@droplogins=droplogins

這樣就將剛創建的DBLINK刪除了。

批註

DBLINK是我們日常查詢管理經常要使用到的一個利器,可以很方便的將原本隔開的兩個資料庫建立起連接。為我們跨庫查詢提供一個非常便捷的方法。

歡迎關注我的公眾號:【SQL資料庫開發】

推薦閱讀:

相关文章