数据库管理平台DMP

深信服数据库管理平台(DMP)提供MySQL、Oracle的RDS功能,支持全生命周期管理、自动MySQL主从切换、故障自愈、事务一致性备份、监控告警等,能够实现业务快速上线、资源快速分发、数据安全保护,提供SLA保障,使数据库运维复杂度大幅下降,帮助客户减少被动性救火工作,专注业务创新。
点击可切换产品版本
知道了
不再提醒
DMP 2.3.0
{{sendMatomoQuery("数据库管理平台DMP","创建链接服务器")}}

创建链接服务器

更新时间:2023-10-07

链接服务器允许 Microsoft SQL Server 在其他数据库服务器实例上运行 SQL Server 语句。

注意: RDS SQL Server 当前不会将链接服务器复制到多可用区部署中的镜像数据库服务器(或 AlwaysOn 可用性组辅助服务器)。您可以在主实例上创建链接服务器,故障转移到高可用性服务器实例,然后再次创建链接服务器,以便它们位于 RDS SQL Server 的其他实例上。

VPC网络场景中(托管云采用VPC网络),出站网络配置之前,链接服务器仅限于单个 VPC内。建议 RDS SQL Server 安装通常应该只能私下访问(即不直接暴露于 Internet)。如果 SQL Server RDS 实例是私有实例(即不公开可用),则前提是需要与 RDS SQL Server 实例位于同一 VPC 中以进行连接。如果 RDS SQL Server 实例是公开可用的(即对公共 Internet 可用),则此方案也适用于任何 SQL Server 安装。

关于链接服务器的说明,请参考MSDN说明:

https://docs.microsoft.com/zh-cn/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine?view=sql-server-2017

示例中使用了,关于sp_addlinkedserver的说明参考MSDN

https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-addlinkedserver-transact-sql?view=sql-server-2017

对于以下示例,您必须通过安全组使用适当的 TCP 端口来允许网络流量用于 SQL Server 的每个入站实例。换句话说,如果您本地库连接到远程库,则必须允许来自 本地实例的 IP 地址以及 SQL Server 用于侦听数据库通信的端口上的流量。

  1. 远程SQL Server数据库实例(被访问的数据库),创建用于数据库访问的登录名(linkuser),并赋予sysdamin权限(生产数据库不建议使用此权限,应最小化分配)。

USE [master]

GO

CREATE LOGIN [linkuser] WITH PASSWORD=N'Abcd#1234' , DEFAULT_DATABASE=[master], CHECK_EXPIRATION=ON, CHECK_POLICY=ON

GO

ALTER SERVER ROLE [sysadmin] ADD MEMBER [linkuser]

GO

  1. 在本地数据库实例中创建访问远程,通常有两种方式指定远程电脑,一种是经server命名为IP地址,一种是在使用‘SQLNCLI’数据驱动,在数据源中指定远程服务器IP

#case 1:服务名为远程数据库实例IP的数据库链接创建方式。

EXEC master.dbo.sp_addlinkedserver @server = N'10.5.54.22', @srvproduct=N'SQL Server'; 

GO 

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname =N'10.5.54.22', @useself=N'False',@locallogin=NULL,@rmtuser=N'linkuser',@rmtpassword='Abcd#1234';

GO

#case 2: 使用SQLNCLI驱动+数据源的方式创建数据库链接服务器。

EXEC master.dbo.sp_addlinkedserver @server = N'TEST', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'10.5.54.22';

GO

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TEST', @useself=N'False',@locallogin=NULL,@rmtuser=N'linkuser',@rmtpassword='Abcd#1234';

GO

  1. 尝试查询链接服务器中的数据库。当链接服务器就位后,您可以使用标准的四部分命名来引用远程服务器上的表、视图等

SELECT name FROM [TEST].master.sys.databases; 

GO

  1. 删除数据库链接(失败时),此步骤不是创建后的必须操作,当需要删除时才需要执行此命令。

EXEC master.dbo.sp_dropserver @server=N'TEST', @droplogins= 'droplogins'

GO