創建鏈接伺服器註意事項 當我們要跨本地資料庫,訪問另外一個資料庫表中的數據時,本地資料庫中就必須要創建遠程資料庫的DBLINK,通過DBLINNK資料庫可以像訪問本地資料庫一樣訪問遠程資料庫表中的數據。 鏈接伺服器允許訪問針對OLE DB數據源的分散式異構查詢。創建鏈接伺服器後,可以針對此伺服器運行 ...
創建鏈接伺服器註意事項
當我們要跨本地資料庫,訪問另外一個資料庫表中的數據時,本地資料庫中就必須要創建遠程資料庫的DBLINK,通過DBLINNK資料庫可以像訪問本地資料庫一樣訪問遠程資料庫表中的數據。
鏈接伺服器允許訪問針對OLE DB數據源的分散式異構查詢。創建鏈接伺服器後,可以針對此伺服器運行分散式查詢,並且查詢可以連接來自多個數據源的表。如果鏈接伺服器被定義為SQL Server的實例,則可以執行遠程存儲過程。
鏈接伺服器的功能和必需參數可能會有很大差異。
使用SSMS資料庫管理工具創建DBLINK
1、連接伺服器-》展開伺服器-》展開伺服器對象-》展開鏈接伺服器-》右鍵點擊鏈接伺服器-》點擊新建鏈接伺服器。
2、在新建鏈接伺服器彈出框-》點擊常規-》輸入鏈接伺服器名稱-》選擇伺服器類型。
3、在新建鏈接伺服器視窗-》點擊安全性-》選擇鏈接伺服器的登陸類型-》添加或者刪除登陸遠程伺服器的映射。
4、在新建連接伺服器彈出框-》點擊伺服器選項-》選擇伺服器選項的屬性。
5、在新建鏈接伺服器彈窗框-》點擊確定-》在對象資源管理器查看結果。
使用SSMS資料庫管理工具創建DBLINK
語法
--聲明資料庫引用
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屬性可以不寫使用系統預設。
示例:以我自己本機為例
--聲明資料庫引用
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
示例結果:顯示創建結果
DBLINK使用
示例
SELECT * FROM [testss].[dbo].[test1] AS A
INNER JOIN [TANG\SQLEXPRESS].[testss].[dbo].[test3] AS B ON A.classid=B.id
結果
DBLINK鏈接優缺點
優點
1、允許跨伺服器訪問。
2、數據量少的情況下用dblink比較簡單,迅速。
3、可以執行遠程存儲過程等。
缺點
1、遠程查詢時易受網路等影響。
2、鏈接穩定性較差。
3、大量消耗資料庫資源。
4、可擴展性較差。
5、維護性差、安全性較低。