欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQLServer之创建链接服务器

程序员文章站 2022-04-09 19:01:21
创建链接服务器注意事项 当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的DBLINK,通过DBLINNK数据库可以像访问本地数据库一样访问远程数据库表中的数据。 链接服务器允许访问针对OLE DB数据源的分布式异构查询。创建链接服务器后,可以针对此服务器运行 ......

创建链接服务器注意事项

当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblinnk数据库可以像访问本地数据库一样访问远程数据库表中的数据。

链接服务器允许访问针对ole db数据源的分布式异构查询。创建链接服务器后,可以针对此服务器运行分布式查询,并且查询可以连接来自多个数据源的表。如果链接服务器被定义为sql server的实例,则可以执行远程存储过程。

链接服务器的功能和必需参数可能会有很大差异。

使用ssms数据库管理工具创建dblink

1、连接服务器-》展开服务器-》展开服务器对象-》展开链接服务器-》右键点击链接服务器-》点击新建链接服务器。

SQLServer之创建链接服务器

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

SQLServer之创建链接服务器

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

SQLServer之创建链接服务器

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

SQLServer之创建链接服务器

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

SQLServer之创建链接服务器

使用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

示例结果:显示创建结果

SQLServer之创建链接服务器

dblink使用

示例

select * from 	[testss].[dbo].[test1]	   as a 
inner join  [tang\sqlexpress].[testss].[dbo].[test3] as b on a.classid=b.id

结果

SQLServer之创建链接服务器

dblink链接优缺点

优点

1、允许跨服务器访问。

2、数据量少的情况下用dblink比较简单,迅速。

3、可以执行远程存储过程等。

缺点

1、远程查询时易受网络等影响。

2、链接稳定性较差。

3、大量消耗数据库资源。

4、可扩展性较差。

5、维护性差、安全性较低。