SQLServer之建立連接服務器

建立連接服務器注意事項

當咱們要跨本地數據庫,訪問另一個數據庫表中的數據時,本地數據庫中就必需要建立遠程數據庫的DBLINK,經過DBLINNK數據庫能夠像訪問本地數據庫同樣訪問遠程數據庫表中的數據。數據庫

連接服務器容許訪問針對OLE DB數據源的分佈式異構查詢。建立連接服務器後,能夠針對此服務器運行分佈式查詢,而且查詢能夠鏈接來自多個數據源的表。若是連接服務器被定義爲SQL Server的實例,則能夠執行遠程存儲過程。安全

連接服務器的功能和必需參數可能會有很大差別。bash

使用SSMS數據庫管理工具建立DBLINK

一、鏈接服務器-》展開服務器-》展開服務器對象-》展開連接服務器-》右鍵點擊連接服務器-》點擊新建連接服務器。服務器

二、在新建連接服務器彈出框-》點擊常規-》輸入連接服務器名稱-》選擇服務器類型。網絡

三、在新建連接服務器窗口-》點擊安全性-》選擇連接服務器的登錄類型-》添加或者刪除登錄遠程服務器的映射。架構

四、在新建鏈接服務器彈出框-》點擊服務器選項-》選擇服務器選項的屬性。分佈式

五、在新建連接服務器彈窗框-》點擊肯定-》在對象資源管理器查看結果。工具

使用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屬性能夠不寫使用系統默認。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
複製代碼

示例結果:顯示建立結果

DBLINK使用

示例

SELECT * FROM   [testss].[dbo].[test1]     AS A
INNER JOIN  [TANG\SQLEXPRESS].[testss].[dbo].[test3] AS B ON A.classid=B.id
複製代碼

結果

DBLINK連接優缺點

優勢

一、容許跨服務器訪問。spa

二、數據量少的狀況下用dblink比較簡單,迅速。

三、能夠執行遠程存儲過程等。

缺點

一、遠程查詢時易受網絡等影響。

二、連接穩定性較差。

三、大量消耗數據庫資源。

四、可擴展性較差。

五、維護性差、安全性較低。

相關文章
相關標籤/搜索