R通过ODBC连接AWS RDS SQL Server报找不到指定服务器实例错误
问题核心原因&优先修复方案
你当前连接代码存在参数冲突问题:SQL Server ODBC驱动支持两种端口指定方式,不能同时混用:
- 直接在
Server参数值末尾加,端口号 - 单独传
Port参数指定端口
你现在同时用了两种写法,会导致驱动解析服务器地址失败,优先尝试修改代码为以下两种任意一种:
第一种(保留Server带端口写法,删除Port参数):
con <- DBI::dbConnect(odbc::odbc(), Driver = "SQLServer", Server = "xxx.xxx.rds.amazonaws.com,1433", Database = "pws", UID = "johndoe", PWD = "password")
第二种(删除Server末尾的端口,保留Port参数):
con <- DBI::dbConnect(odbc::odbc(), Driver = "SQLServer", Server = "xxx.xxx.rds.amazonaws.com", Database = "pws", UID = "johndoe", PWD = "password", Port = 1433)
其他排查方向
- 检查ODBC驱动版本和名称匹配问题:部分Windows环境下SQL Server ODBC驱动的正确名称是
ODBC Driver 17 for SQL Server/ODBC Driver 18 for SQL Server,而不是简写的SQLServer,你可以通过运行odbc::odbcListDrivers()查看当前系统已安装的ODBC驱动的准确名称,替换Driver参数值即可 - 如果你使用的是最新版SQL Server ODBC驱动(18版本及以上),默认强制SSL加密,需要额外加参数
Encrypt = "optional",AWS RDS默认使用自签证书的话也可以加TrustServerCertificate = "yes"参数适配 - 检查R运行环境的网络限制:确认当前运行R的设备没有被防火墙、安全组策略拦截1433端口的出站请求,SSMS能连不代表R的运行进程没有被单独限制网络权限
内容的提问来源于stack exchange,提问作者Kyle McWreath
相关产品推荐
相关产品推荐

