Mac系统下RStudio连接Docker部署的SQL Server出现驱动报错如何解决?
问题根因
报错的核心原因是Driver = "SQL Server"是Windows平台默认的SQL Server ODBC驱动名称,Mac系统未预装该驱动,unixODBC驱动管理器无法找到对应驱动文件。
解决步骤
- 第一步:安装Mac平台SQL Server ODBC驱动
通过Homebrew安装微软官方驱动,执行以下终端命令:
# 添加微软软件源 brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release # 更新源索引 brew update # 自动接受许可协议并安装18版驱动和工具 HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18 mssql-tools18
如果未安装Homebrew,先执行Homebrew官方安装命令后再执行上述操作。
- 第二步:确认驱动的正确标识
终端执行odbcinst -q -d查看已注册的ODBC驱动列表,输出中会包含ODBC Driver 18 for SQL Server,该字符串为后续连接需要填写的正确驱动名称。 - 第三步:修正R连接代码
需要修改3处原有代码的配置:
- 替换Driver参数为第二步查询到的正确驱动名称
- 删除
Trusted_Connection = "True"配置,该参数为Windows域认证专用,Mac使用SQL Server账号认证无需配置 - 新增SSL相关兼容参数,规避本地Docker实例无合法SSL证书的报错
修正后的代码示例:
# 未安装odbc包先执行 install.packages("odbc") con <- DBI::dbConnect(odbc::odbc(), Driver = "ODBC Driver 18 for SQL Server", Server = "localhost", Database = "AdventureWorks2019", UID = "sa", PWD = "<YourStrong@Passw0rd>", Port = 1433, TrustServerCertificate = "Yes", Encrypt = "Optional")
- 第四步:异常兼容方案
如果执行上述步骤后仍然报驱动找不到的错误,可以直接填写驱动文件的绝对路径替换Driver参数:- Intel芯片Mac路径:
/usr/local/lib/libmsodbcsql.18.dylib - Apple M系列芯片Mac路径:
/opt/homebrew/lib/libmsodbcsql.18.dylib
- Intel芯片Mac路径:
连接验证
连接建立成功后,执行DBI::dbListTables(con)即可输出AdventureWorks2019数据库的所有表名,说明连接正常。
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

