當咱們要跨本地數據庫,訪問另一個數據庫表中的數據時,本地數據庫中就必需要建立遠程數據庫的DBLINK,經過DBLINNK數據庫能夠像訪問本地數據庫同樣訪問遠程數據庫表中的數據。數據庫
連接服務器容許訪問針對OLE DB數據源的分佈式異構查詢。建立連接服務器後,能夠針對此服務器運行分佈式查詢,而且查詢能夠鏈接來自多個數據源的表。若是連接服務器被定義爲SQL Server的實例,則能夠執行遠程存儲過程。安全
連接服務器的功能和必需參數可能會有很大差別。bash
一、鏈接服務器-》展開服務器-》展開服務器對象-》展開連接服務器-》右鍵點擊連接服務器-》點擊新建連接服務器。服務器
二、在新建連接服務器彈出框-》點擊常規-》輸入連接服務器名稱-》選擇服務器類型。網絡
三、在新建連接服務器窗口-》點擊安全性-》選擇連接服務器的登錄類型-》添加或者刪除登錄遠程服務器的映射。架構
四、在新建鏈接服務器彈出框-》點擊服務器選項-》選擇服務器選項的屬性。分佈式
五、在新建連接服務器彈窗框-》點擊肯定-》在對象資源管理器查看結果。工具
--聲明數據庫引用
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屬性能夠不寫使用系統默認。ui
--聲明數據庫引用
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
複製代碼
一、容許跨服務器訪問。spa
二、數據量少的狀況下用dblink比較簡單,迅速。
三、能夠執行遠程存儲過程等。
一、遠程查詢時易受網絡等影響。
二、連接穩定性較差。
三、大量消耗數據庫資源。
四、可擴展性較差。
五、維護性差、安全性較低。