在与SQL Server建立连接时出现与网络相关的或特定于实例的错误

本文介绍了ECS通过内网以及ECS以外的其他设备通过外网无法访问RDS SQL Server实例时的解决方案。

问题描述

使用ECS实例通过内网连接RDS SQL Server实例时,提示以下错误信息。

无法连接到XXX。Cannot connect to XXX。
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: TCP Provider, error: 0 - 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。) (Microsoft SQL Server,错误:10060或258)

解决方案

说明

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。

  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

ECS通过内网无法访问RDS的解决办法

  1. 检查ECS实例的内网IP地址是否已添加到RDS实例的白名单。

    通过RDS内网地址连接RDS实例前,需要先将ECS内网IP添加到RDS白名单。相关操作,请参见如何查询ECS实例的IP地址如何设置RDS白名单

    说明

    如果仅将ECS外网IP地址添加到RDS白名单,则无法通过内网连接RDS。

  2. 检查ECS和RDS实例是否位于不同的地域。

    ECS实例和RDS实例需要位于同一地域才能内网互通。可以是同一地域的相同或不同可用区。

    点击查看RDS实例和ECS实例地域的方法

    进入RDS实例详情页,查看实例所在地域。

    image

    查看ECS实例所在地域。

    image

    如果ECS实例和RDS实例位于不同的地域,则无法直接通过内网互通,请参见以下方法处理:

    • 方法一:

      • 将ECS实例释放退款,重新购买与RDS实例同一地域的实例。

      • 将RDS实例释放退款,重新购买与ECS实例同一地域的实例。

    • 方法二:

      ECS实例使用RDS实例的公网连接地址连接RDS实例,这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址

    • 方法三:

      使用云企业网打通跨地域VPC网络(前提是源和目标的网络类型都是专有网络VPC),详情请参见云企业网入门概述

  3. 检查ECS和RDS的网络类型是否相同(都是专有网络或都是经典网络)。

    点击查看RDS实例和ECS实例网络类型的方法

    进入RDS实例详情页,查看实例网络类型。

    image

    查看ECS实例网络类型。

    image

    如果网络类型不同,一个是经典网络,一个是专有网络,请参见以下方法处理:

    重要

    阿里云各产品经典网络正在逐步下线中,对于RDS实例和ECS实例,建议您尽快将经典网络切换到VPC网络。具体详情,请参见【产品/功能变更】RDS数据库经典网络下线计划【下线公告】停止提供阿里云经典网络类型的ECS实例相关服务

    • ECS实例采用专有网络而RDS实例采用经典网络的场景:

      • 方法一(推荐):将RDS实例从经典网络切换为专有网络(需要切换到待连接的ECS实例所在的VPC)。具体操作,请参见更改网络类型

      • 方法二:ECS实例使用RDS实例的公网地址连接RDS实例,这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址

    • ECS实例采用经典网络而RDS实例采用专有网络的场景:

  4. 如果ECS和RDS实例的网络类型都是专有网络,则检查ECS与RDS实例是否位于不同的VPC。

    点击查看RDS实例和ECS实例VPC ID的方法

    查看RDS实例的VPC ID。

    image

    查看ECS实例的VPC ID。

    image

    如果专有网络不同,请参见以下方法进行处理:

  5. 检查白名单是否设置成了0.0.0.0,正确格式应该为0.0.0.0/0

    重要

    0.0.0.0/0表示允许任何IP访问RDS实例,有安全风险,请谨慎使用。

  6. 检查ECS实例中配置的RDS内网地址和端口是否正确。更多详情,请参见查看内外网地址和端口

ECS以外的设备无法访问RDS的解决办法

说明

建议在访问RDS时使用内网域名而不是IP地址,IP地址可能随着实例的迁移而变动。

ECS以外的设备访问RDS时,只能通过外网连接。如果连接失败,请参见如下方法解决。

  1. 检查您使用的连接地址是否为RDS的内网地址。

    您需要修改连接地址为RDS外网地址。如何获取外网地址,请参见查看外网连接地址

    说明

    ECS和DMS以外的设备无法通过内网访问RDS(除非使用物理专线)。

  2. 检查是否已设置RDS白名单。如果未设置,请参见设置白名单

  3. 检查白名单是否设置成了0.0.0.0,正确格式为0.0.0.0/0

    重要

    0.0.0.0/0表示允许任何IP访问RDS实例,有安全风险,请谨慎使用。

  4. 如果您已设置白名单,但还是连接失败,很可能是因为您在白名单中添加的设备公网IP地址并非设备真正的出口IP地址。原因如下所示:

    • 公网IP地址不固定,可能会变动。

    • IP地址查询工具或网站查询的公网IP地址不准确。

    说明

    如何确认设备公网IP地址,请参见SQL Server如何确定外部服务器/客户端的公网IP地址

适用于

云数据库RDS SQL Server版