當咱們要跨本地數據庫,訪問另一個數據庫表中的數據時,本地數據庫中就必需要建立遠程數據庫的DBLINK,經過DBLINNK數據庫能夠像訪問本地數據庫同樣訪問遠程數據庫表中的數據。數據庫
連接服務器容許訪問針對OLE DB數據源的分佈式異構查詢。建立連接服務器後,能夠針對此服務器運行分佈式查詢,而且查詢能夠鏈接來自多個數據源的表。若是連接服務器被定義爲SQL Server的實例,則能夠執行遠程存儲過程。安全
連接服務器的功能和必需參數可能會有很大差別。服務器
一、鏈接服務器-》展開服務器-》展開服務器對象-》展開連接服務器-》右鍵點擊連接服務器-》點擊新建連接服務器。網絡
二、在新建連接服務器彈出框-》點擊常規-》輸入連接服務器名稱-》選擇服務器類型。架構
三、在新建連接服務器窗口-》點擊安全性-》選擇連接服務器的登錄類型-》添加或者刪除登錄遠程服務器的映射。分佈式
四、在新建鏈接服務器彈出框-》點擊服務器選項-》選擇服務器選項的屬性。工具
五、在新建連接服務器彈窗框-》點擊肯定-》在對象資源管理器查看結果。spa
--聲明數據庫引用 use master; go --建立DbLink語法 --第一步:定義DBLINK類型 exec master.dbo.sp_addlinkedserver @server='連接服務器名稱',@srvproduct='SQL Server'; go --第二步:定義DBLINK鏈接屬性 --第一種安全性:不創建鏈接(刪除下邊的登錄) --第二種安全性:不使用安全上下文創建鏈接 --exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'連接服務器名稱', @locallogin = NULL , @useself = N'False' --go --第三種安全性:使用登陸名的當前安全上下文創建鏈接 --exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'連接服務器名稱', @locallogin = NULL , @useself = N'True' --go --第四種安全性:使用此安全上下文創建鏈接 --exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname='連接服務器名稱',@locallogin=NULL,@useself='False',@rmtuser='登陸名',@rmtpassword='密碼'; --go --排序規則兼容 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'collation compatible', @optvalue=N'true' | N'false' go --數據訪問 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'data access', @optvalue=N'true' | N'false' go --訂閱服務器 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'dist', @optvalue=N'true' | N'false' go --發佈服務器 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'pub', @optvalue=N'true' | N'false' go --RPC exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'rpc', @optvalue=N'true' | N'false' go --RPC 超時 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'rpc out', @optvalue=N'true' | N'false' go --分發服務器 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'sub', @optvalue=N'true' | N'false' go --鏈接超時值 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'connect timeout', @optvalue=N'0' go --排序規則名稱 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'collation name', @optvalue=null go --惰性架構驗證 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'lazy schema validation', @optvalue=N'true' | N'false' go --查詢超時值 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'query timeout', @optvalue=N'0' go --使用遠程排序規則 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'use remote collation', @optvalue=N'true' | N'false' go --爲RPC啓用針對分佈式事務的升級 exec master.dbo.sp_serveroption @server=N'連接服務器名稱', @optname=N'remote proc transaction promotion', @optvalue=N'true' | N'false' go
第一步和第二步必須同時執行,後面DBLINK屬性能夠不寫使用系統默認。code
--聲明數據庫引用 use master; go --建立DbLink語法 --第一步:定義DBLINK類型 exec master.dbo.sp_addlinkedserver @server='TANG\SQLEXPRESS',@srvproduct='SQL Server'; go ----排序規則兼容 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'collation compatible', @optvalue=N'false' --go ----數據訪問 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'data access', @optvalue=N'true' --go ----訂閱服務器 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'dist', @optvalue=N'false' --go ----發佈服務器 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'pub', @optvalue=N'false' --go ----RPC --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'rpc', @optvalue=N'false' --go ----RPC 超時 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'rpc out', @optvalue=N'false' --go ----分發服務器 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'sub', @optvalue=N'false' --go ----鏈接超時值 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'connect timeout', @optvalue=N'0' --go ----排序規則名稱 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'collation name', @optvalue=null --go ----惰性架構驗證 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'lazy schema validation', @optvalue=N'false' --go ----查詢超時值 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'query timeout', @optvalue=N'0' --go ----使用遠程排序規則 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'use remote collation', @optvalue=N'true' --go ----爲RPC啓用針對分佈式事務的升級 --exec master.dbo.sp_serveroption @server=N'TEST', @optname=N'remote proc transaction promotion', @optvalue=N'true' --go --第二步:定義DBLINK鏈接屬性 --第一種安全性:不創建鏈接(刪除下邊的登錄) --第二種安全性:不使用安全上下文創建鏈接 --exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'TANG\SQLEXPRESS', @locallogin = NULL , @useself = N'False' --go --第三種安全性:使用登陸名的當前安全上下文創建鏈接 exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'TANG\SQLEXPRESS', @locallogin = NULL , @useself = N'True' go --第四種安全性:使用此安全上下文創建鏈接 --exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname='TANG\SQLEXPRESS',@locallogin=NULL,@useself='False',@rmtuser='tests',@rmtpassword='1234'; --go
SELECT * FROM [testss].[dbo].[test1] AS A INNER JOIN [TANG\SQLEXPRESS].[testss].[dbo].[test3] AS B ON A.classid=B.id
一、容許跨服務器訪問。server
二、數據量少的狀況下用dblink比較簡單,迅速。
三、能夠執行遠程存儲過程等。
一、遠程查詢時易受網絡等影響。
二、連接穩定性較差。
三、大量消耗數據庫資源。
四、可擴展性較差。
五、維護性差、安全性較低。