RDS SQL Server 通过链接服务器访问公网的解决方案

简介: RDS SQL Server 开放了 Linked Server功能,但是默认只能在RDS之间,或者同VPC 下的ECS 自建SQL Server,实现Linkded Server 功能。本文将介绍,利用VPC SNAT 功能,实现RDS Linked Server 访问公网数据库的能力。

描述

RDS SQL Server 开放了 Linked Server功能,但是默认只能在RDS之间,或者同VPC 下的ECS 自建SQL Server,实现Linkded Server 功能。本文将介绍,利用VPC SNAT 功能,实现RDS Linked Server 访问公网数据库的能力。

链接服务器

功能

链接服务器使您能够实现可以获取和更新其他数据库中的数据的分布式数据库。在需要实现数据库分片而不需要创建自定义应用程序代码或直接从远程数据源加载的场景中,它们是一种很好的解决方案。

优点

  • 从SQL Server外部访问数据的能力。
  • 在跨企业的异构数据源上发布分布式查询、更新、命令和事务的能力。
  • 类似地处理不同数据源的能力。

RDS 链接服务器

RDS 实例,默认是没有权限执行SQL Server 自带的添加链接服务的存储过程。

需要参考阿里云官方文档,通过RDS 自带的存储过程来添加链接服务器。

增加链接服务器Linked Server

T-SQL命令

sp_rds_add_linked_server

支持的实例

  • SQL Server 2012、2014、2016、2017、2019标准高可用版(独享型或通用型实例)
  • SQL Server 2012、2014、2016企业高可用版(独享型或通用型实例)
  • SQL Server 2017、2019企业集群版(独享型或通用型实例)

说明共享型规格实例暂不支持该存储过程。


描述

增加实例的链接服务器。支持分布式事务,实例主备自动创建,切换不需要再配置。

使用方法

DECLARE
@linked_server_name sysname = N'y******lb',@data_source sysname = N'****.sqlserver.rds.aliyuncs.com,1433',--style: 10.1.10.1,1433@user_name sysname = N'***',@password nvarchar(128)= N'******',@source_user_name sysname = N't**t',@source_password nvarchar(128)= N'******',@link_server_options xml
= N'            <rds_linked_server>                <config option="data access">true</config>                <config option="rpc">true</config>                <config option="rpc out">true</config>            </rds_linked_server>'EXEC sp_rds_add_linked_server
@linked_server_name,@data_source,@user_name,@password,@source_user_name,@source_password,@link_server_options


链接服务器配置


未配置SNAT 情况下

报错:A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible.

如截图:

ECS SNAT 配置

1. 查看RDS 实例的VPC ID信息


2. 点 vpc id ,进行专有网络页面,选择公网NAT网关,创建NAT网关


确认目前交换机没有公网NAT网关


3. 创建公网NAT网关,选择RDS 实例所使用的VPC ID(需要付费支付)



4. 等待NAT网关创建成功


5. 查看公网NAT网关和SNAT条目ID信息

6. 查看路由表记录,确认,自定义路由条目,目标网段和下一跳为刚创建的公网NAT网关


7. 此时找一台同VPC ECS 主机实例进行验证,访问公网地址是否通。


注: ECS 要通过VNC 登录,不能申请公网地址,否则验证会不准


8. 创建RDS 实例,注意选择刚才配置的 VPC

9 .在RDS SQL Server 创建链接服务器

注:显示链接服务器创建成功,部分报错是RDS 存储过程权限兼容性问题,不影响使用。


10. 测试验证插入和查询功能成功

参考文档

微软 Linked Server 文档:

https://learn.microsoft.com/en-us/sql/relational-databases/linked-servers/linked-servers-database-engine?view=sql-server-ver16

阿里云链接服务器文档:

https://help.aliyun.com/document_detail/88094.html#section-ckn-jv3-v2b

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1574 152
|
10月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1095 156
|
关系型数据库 MySQL 网络安全
【YashanDB知识库】如何使用MySQL客户端链接YashanDB
【YashanDB知识库】如何使用MySQL客户端链接YashanDB
【YashanDB知识库】如何使用MySQL客户端链接YashanDB
|
10月前
|
SQL 关系型数据库 MySQL
排除通过IP访问MySQL时出现的连接错误问题
以上步骤涵盖了大多数遇到远程连接 MySQL 数据库时出现故障情形下所需采取措施,在执行每个步骤后都应该重新尝试建立链接以验证是否已经解决问题,在多数情形下按照以上顺序执行将能够有效地排除并修复大多数基本链接相关故障。
611 3
|
11月前
|
SQL 容灾 安全
云时代SQL Server的终极答案:阿里云 RDS SQL Server如何用异地容灾重构系统可靠性
在数字化转型的浪潮中,数据库的高可用性已成为系统稳定性的生命线。作为经历过多次生产事故的资深开发者,肯定深知传统自建SQL Server架构的脆弱性——直到遇见阿里云 RDS SQL Server,其革命性的异地容灾架构彻底改写了游戏规则。
|
缓存 关系型数据库 MySQL
MySQL并发访问与高负载处理方法
综上所述,提高MySQL并发能力和处理高负载的策略涵盖了硬件配置、软件优化、架构调整以及运维监控等多个方面。通过综合施策,可以确保数据库系统在面对不断增长的并发需求时,维持高效和稳定的性能。
480 8
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之如何跨账号访问同一个MySQL
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
233 2
|
11月前
|
SQL 关系型数据库 MySQL
生成MySQL语句生成中存在不必要的文件引用链接
在生成MySQL建表语句时,系统在字段名后错误添加了文件链接,如`[id](file://...)`,导致SQL语句无法直接使用。该问题影响效率,需手动清理链接。建议去除链接,确保生成纯净、可执行的SQL语句。
229 0
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
918 11
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
2913 3
Docker安装Mysql5.7,解决无法访问DockerHub问题

热门文章

最新文章

推荐镜像

更多