学习使用R连接SQL Server数据库时报连接错误如何解决?
报错原因排查及解决方法
一、代码拼写错误修复
- Driver参数拼写错误:当前填写的
ODBC Driver 17 for SQL Serve缺失末尾的字母r,正确写法为ODBC Driver 17 for SQL Server - 若使用SQL Server命名实例,Server参数需要补全实例名,格式为
主机名\实例名,例如DESKTOP-SHXXX\SQLEXPRESS
二、SQL Server服务与网络配置排查
- 检查SQL Server服务运行状态:按下Win+R输入
services.msc打开服务列表,找到对应SQL Server实例服务,确认状态为「正在运行」 - 开启通信协议:打开SQL Server配置管理器,进入「SQL Server网络配置」下对应实例的协议设置页,将Named Pipes和TCP/IP均设置为启用,修改后重启SQL Server服务生效
- 开启远程连接权限:打开SQL Server Management Studio,右键实例→属性→连接,勾选「允许远程连接到此服务器」
- 防火墙配置:检查Windows防火墙是否放行SQL Server默认端口1433,若修改过自定义端口则放行对应端口,也可直接将sqlservr.exe程序加入防火墙放行列表
三、身份验证逻辑修正
你同时填写了UID、PWD和Trusted_Connection="yes"两套互斥的验证逻辑,二者只能选其一:
- 若使用Windows身份验证,删除
UID和PWD两个参数,保留Trusted_Connection="yes" - 若使用SQL Server身份验证,删除
Trusted_Connection="yes"参数,保留账号密码配置
修正后代码示例
library(odbc) # SQL Server身份验证写法 con <- dbConnect(odbc(), Driver = "ODBC Driver 17 for SQL Server", Server ="DESKTOP-SHXXX", # 有命名实例请替换为 DESKTOP-SHXXX\你的实例名 Database ="BikeStores", UID="robin", PWD = rstudioapi::askForPassword("请输入数据库密码")) # Windows身份验证写法 # con <- dbConnect(odbc(), # Driver = "ODBC Driver 17 for SQL Server", # Server ="DESKTOP-SHXXX", # Database ="BikeStores", # Trusted_Connection ="yes")
内容的提问来源于stack exchange,提问作者Robin Desbois
相关产品推荐
相关产品推荐

