在R中使用ODBC连接SQL Server时出现登录失败错误求助
R连接SQL Server ODBC时登录失败问题
问题描述
已在Windows系统中成功创建并测试了SQL Server的ODBC数据源对象,但在RStudio中执行以下代码连接数据库时:
library(DBI) con <- dbConnect(odbc::odbc(), "ReadUser")
出现如下错误:
Error: nanodbc/nanodbc.cpp:1135: 28000: [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user ''.
附ODBC设置截图:
测试成功截图:
请求协助完成R与SQL Server的连接设置。
解决方案
1. 匹配身份验证方式补充连接参数
错误核心是R未传递有效登录凭据,根据ODBC配置的身份验证方式调整代码:
- Windows身份验证:确保RStudio以有权访问SQL Server的Windows用户启动,代码添加信任连接参数:
con <- dbConnect(odbc::odbc(), dsn = "ReadUser", Trusted_Connection = "YES")
- SQL Server身份验证:显式指定SQL用户名和密码:
con <- dbConnect(odbc::odbc(), dsn = "ReadUser", UID = "你的SQL登录用户名", PWD = "你的SQL登录密码")
2. 检查ODBC数据源与RStudio位数匹配
RStudio的位数(32/64位)必须和创建的ODBC数据源位数一致:
- 执行
Sys.getenv("R_ARCH")查看RStudio位数:输出/x64为64位,/i386为32位 - 打开对应位数的ODBC数据源管理器,确认
ReadUser存在于对应列表中
3. 验证ODBC数据源配置细节
打开ODBC数据源管理器:
- 若用SQL Server身份验证,确认是否在数据源配置中保存了用户名
- 若用Windows身份验证,确认是否勾选了「信任连接」选项
4. 跳过DSN直接指定连接信息(可选)
如果DSN方式仍有问题,可直接在代码中指定驱动、服务器等信息:
con <- dbConnect(odbc::odbc(), Driver = "ODBC Driver 17 for SQL Server", # 替换为你安装的驱动版本 Server = "你的SQL服务器地址", Database = "目标数据库名称", Trusted_Connection = "YES") # Windows身份验证用此参数,SQL身份验证替换为UID和PWD
内容的提问来源于stack exchange,提问作者afrologicinsect
相关产品推荐
相关产品推荐

