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;
相关文章
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
455 0
|
人工智能 运维 关系型数据库
|
关系型数据库 MySQL 网络安全
【YashanDB知识库】如何使用MySQL客户端链接YashanDB
【YashanDB知识库】如何使用MySQL客户端链接YashanDB
【YashanDB知识库】如何使用MySQL客户端链接YashanDB
|
关系型数据库 MySQL 数据库连接
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
2922 82
|
11月前
|
SQL 关系型数据库 MySQL
生成MySQL语句生成中存在不必要的文件引用链接
在生成MySQL建表语句时,系统在字段名后错误添加了文件链接,如`[id](file://...)`,导致SQL语句无法直接使用。该问题影响效率,需手动清理链接。建议去除链接,确保生成纯净、可执行的SQL语句。
223 0
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
监控 Java 关系型数据库
Spring Boot整合MySQL主从集群同步延迟解决方案
本文针对电商系统在Spring Boot+MyBatis架构下的典型问题(如大促时订单状态延迟、库存超卖误判及用户信息更新延迟)提出解决方案。核心内容包括动态数据源路由(强制读主库)、大事务拆分优化以及延迟感知补偿机制,配合MySQL参数调优和监控集成,有效将主从延迟控制在1秒内。实际测试表明,在10万QPS场景下,订单查询延迟显著降低,超卖误判率下降98%。
575 5
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
441 11
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
799 3
|
存储 监控 关系型数据库
MySQL自增ID耗尽解决方案:应对策略与实践技巧
在MySQL数据库中,自增ID(AUTO_INCREMENT)是一种特殊的属性,用于自动为新插入的行生成唯一的标识符。然而,当自增ID达到其最大值时,会发生什么?又该如何解决?本文将探讨MySQL自增ID耗尽的问题,并提供一些实用的解决方案。
699 1

推荐镜像

更多