SQLServer之创建链接服务器
创建链接服务器注意事项
当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的DBLINK,通过DBLINNK数据库可以像访问本地数据库一样访问远程数据库表中的数据。
链接服务器允许访问针对OLE DB数据源的分布式异构查询。创建链接服务器后,可以针对此服务器运行分布式查询,并且查询可以连接来自多个数据源的表。如果链接服务器被定义为SQL Server的实例,则可以执行远程存储过程。
链接服务器的功能和必需参数可能会有很大差异。
使用SSMS数据库管理工具创建DBLINK
1、连接服务器-》展开服务器-》展开服务器对象-》展开链接服务器-》右键点击链接服务器-》点击新建链接服务器。

2、在新建链接服务器弹出框-》点击常规-》输入链接服务器名称-》选择服务器类型。

3、在新建链接服务器窗口-》点击安全性-》选择链接服务器的登陆类型-》添加或者删除登陆远程服务器的映射。

4、在新建连接服务器弹出框-》点击服务器选项-》选择服务器选项的属性。

5、在新建链接服务器弹窗框-》点击确定-》在对象资源管理器查看结果。

使用SSMS数据库管理工具创建DBLINK
语法
|
1
2
3
4
5
6
7
8
|
--声明数据库引用use master;go--创建DbLink语法--第一步:定义DBLINK类型exec master.dbo.sp_addlinkedserver @server='链接服务器名称',@srvproduct='SQL Server';go |
|
1
2
3
4
5
6
7
8
9
10
11
|
--第二步:定义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 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
--排序规则兼容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--RPCexec 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=nullgo--惰性架构验证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属性可以不写使用系统默认。
示例:以我自己本机为例
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
--声明数据库引用use master;go--创建DbLink语法--第一步:定义DBLINK类型exec master.dbo.sp_addlinkedserver @server='TANGSQLEXPRESS',@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'TANGSQLEXPRESS', @locallogin = NULL , @useself = N'False'--go--第三种安全性:使用登录名的当前安全上下文建立连接exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'TANGSQLEXPRESS', @locallogin = NULL , @useself = N'True'go--第四种安全性:使用此安全上下文建立连接--exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname='TANGSQLEXPRESS',@locallogin=NULL,@useself='False',@rmtuser='tests',@rmtpassword='1234';--go |
示例结果:显示创建结果

DBLINK使用
示例
|
1
2
|
SELECT * FROM [testss].[dbo].[test1] AS AINNER JOIN [TANGSQLEXPRESS].[testss].[dbo].[test3] AS B ON A.classid=B.id |
结果

DBLINK链接优缺点
优点
1、允许跨服务器访问。
2、数据量少的情况下用dblink比较简单,迅速。
3、可以执行远程存储过程等。
缺点
1、远程查询时易受网络等影响。
2、链接稳定性较差。
3、大量消耗数据库资源。
4、可扩展性较差。
5、维护性差、安全性较低。