SQL中的DBLINK
點(diǎn)擊關(guān)注上方“SQL數(shù)據(jù)庫(kù)開(kāi)發(fā)”,
設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨
DBLINK的定義
當(dāng)我們要跨本地?cái)?shù)據(jù)庫(kù),訪問(wèn)另外一個(gè)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)時(shí),本地?cái)?shù)據(jù)庫(kù)中就必須要?jiǎng)?chuàng)建遠(yuǎn)程數(shù)據(jù)庫(kù)的DBLINK,通過(guò)DBLINK本地?cái)?shù)據(jù)庫(kù)可以像訪問(wèn)本地?cái)?shù)據(jù)庫(kù)一樣訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)表中的數(shù)據(jù)。
創(chuàng)建DBLINK的語(yǔ)法
定義DBLINK類(lèi)型
EXEC master.dbo.sp_addlinkedserver
@server = '遠(yuǎn)程IP地址',
@srvproduct='DBLINK類(lèi)型(默認(rèn)SQL Server)'
定義DBLINK連接屬性
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname='遠(yuǎn)程IP地址',
@useself='False',
@locallogin=NULL,
@rmtuser='遠(yuǎn)程數(shù)據(jù)庫(kù)用戶(hù)名',
@rmtpassword='遠(yuǎn)程數(shù)據(jù)庫(kù)密碼'
以上兩步要一起執(zhí)行才能生成DBLINK連接。
創(chuàng)建DBLINK連接示例
本地?cái)?shù)據(jù)庫(kù)IP地址是192.168.0.35,已知局域網(wǎng)有一臺(tái)IP地址為192.169.0.39的數(shù)據(jù)庫(kù)服務(wù)器,其賬戶(hù)和密碼分別是sa和!QAZ1234,那么我們應(yīng)該這樣創(chuàng)建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執(zhí)行完后我們會(huì)看到在SSMS的服務(wù)器對(duì)象下面有一個(gè)創(chuàng)建好的DBLINK連接,如下圖:

DBLINK的作用
前面的定義已經(jīng)說(shuō)明,通過(guò)DBLINK本地?cái)?shù)據(jù)庫(kù)可以像訪問(wèn)本地?cái)?shù)據(jù)庫(kù)一樣訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)表中的數(shù)據(jù)。
DBLINK示例
以本地Customers表和遠(yuǎn)程數(shù)據(jù)庫(kù)192.168.0.39里SQL_Road數(shù)據(jù)庫(kù)下的Orders表為例

Customers表

遠(yuǎn)程數(shù)據(jù)庫(kù)中的Orders表
我們想用本地的Customers表關(guān)聯(lián)遠(yuǎn)程數(shù)據(jù)庫(kù)192.168.0.39里SQL_Road數(shù)據(jù)庫(kù)下的Orders表里的數(shù)據(jù),可以這樣寫(xiě)SQL:
SELECT c.姓名,o.訂單日期 FROM Customers c
JOIN [192.168.0.38].SQL_Road.dbo.Orders o ON c.客戶(hù)ID=o.客戶(hù)ID結(jié)果如下:

這樣我們就將本來(lái)隔絕的兩個(gè)表通過(guò)DBLINK關(guān)聯(lián)上了。
刪除DBLINK
當(dāng)我們不需要DBLINK的時(shí)候,可以通過(guò)以下方式進(jìn)行刪除
EXEC master.dbo.sp_dropserver
@server='192.169.0.39',
@droplogins='droplogins'這樣就將剛創(chuàng)建的DBLINK刪除了。
總結(jié)
DBLINK是我們?nèi)粘2樵?xún)管理經(jīng)常要使用到的一個(gè)利器,可以很方便的將原本隔開(kāi)的兩個(gè)數(shù)據(jù)庫(kù)建立起連接。為我們跨庫(kù)查詢(xún)提供一個(gè)非常便捷的方法。
最后給大家分享我寫(xiě)的SQL兩件套:《SQL基礎(chǔ)知識(shí)第二版》和《SQL高級(jí)知識(shí)第二版》的PDF電子版。里面有各個(gè)語(yǔ)法的解釋、大量的實(shí)例講解和批注等等,非常通俗易懂,方便大家跟著一起來(lái)實(shí)操。
有需要的讀者可以下載學(xué)習(xí),在下面的公眾號(hào)「數(shù)據(jù)前線」(非本號(hào))后臺(tái)回復(fù)關(guān)鍵字:SQL,就行 數(shù)據(jù)前線
后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨
后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。
推薦閱讀

