SQL中的Dblink你了解多少?
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.168.0.35,已知局域網有一臺IP地址為192.169.0.39的數據庫服務器,其賬戶和密碼分別是sa和!QAZ1234,那么我們應該這樣創建DBLINK連接:
USE master
GO
EXEC master.dbo.sp_addlinkedserver
@server = '192.168.0.39',
@srvproduct='SQL Server'
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname='192.168.0.39',
@useself='False',
@locallogin=NULL,
@rmtuser='sa',
@rmtpassword='!QAZ1234'
Go
執行完后我們會看到在SSMS的服務器對象下面有一個創建好的DBLINK連接,如下圖:
DBLINK的作用
前面的定義已經說明,通過DBLINK本地數據庫可以像訪問本地數據庫一樣訪問遠程數據庫表中的數據。
DBLINK示例
以本地Customers表和遠程數據庫192.168.0.39里SQL_Road數據庫下的Orders表為例
Customers表
遠程數據庫中的Orders表
我們想用本地的Customers表關聯遠程數據庫192.168.0.39里SQL_Road數據庫下的Orders表里的數據,可以這樣寫SQL:
SELECT c.姓名,o.訂單日期 FROM Customers c
JOIN [192.168.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是我們日常查詢管理經常要使用到的一個利器,可以很方便的將原本隔開的兩個數據庫建立起連接。為我們跨庫查詢提供一個非常便捷的方法。