如何让MacOS Apple Silicon的R Studio连接Parallels虚拟机内的MS SQL Server
解决MacOS原生R Studio连接Parallels虚拟机SQL Server的问题
环境配置
- MacBook Pro 14" M1 Pro
- MacOS Apple Silicon原生R Studio
- Parallels 18运行ARM版Windows 11虚拟机,内置SQL Server 2014
- 使用Microsoft SQL Server Management Studio 2018维护数据库
问题
尝试用MacOS主机上的R Studio(Tidyverse + ODBC)连接虚拟机内的SQL Server,代码如下:
con <- DBI::dbConnect( odbc::odbc(), Driver = "SQL Server", Server = "WINDOWSPARALLELS\\LOCALSERVERPLS", Database = "CustomerSalesDW" )
运行后报错:
Error: nanodbc/nanodbc.cpp:1118: 00000: [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found
虚拟机内R Studio可正常运行该代码,但速度过慢,需实现主机直连。
解决方案
1. 安装MacOS适配的SQL Server ODBC驱动
MacOS(Apple Silicon架构)不支持Windows的"SQL Server"驱动,需安装微软官方提供的适配驱动:
打开终端,通过Homebrew安装:
brew install msodbcsql17 mssql-tools
若未安装Homebrew,可通过官方脚本完成安装。
2. 确认驱动名称
安装后,在终端执行以下命令查看已安装的ODBC驱动:
odbcinst -q -d
输出中会显示类似[ODBC Driver 17 for SQL Server]的条目,这就是R代码中要使用的Driver值。
3. 开启虚拟机SQL Server的远程连接权限
在Windows 11虚拟机中操作:
- 打开SQL Server配置管理器,依次进入SQL Server网络配置 -> MSSQLSERVER的协议,启用TCP/IP协议。
- 双击TCP/IP协议,切换到IP地址选项卡,拉至底部的IPAll,设置TCP端口为1433(SQL Server默认端口)。
- 重启**SQL Server (MSSQLSERVER)**服务。
- 配置Windows防火墙,允许1433端口的入站连接,或临时关闭防火墙用于测试。
4. 获取虚拟机IP地址
在Windows 11虚拟机的命令提示符中执行:
ipconfig
找到Parallels网络适配器对应的IPv4地址(例如10.211.55.4)。
5. 修改R连接代码
替换Driver为Mac上的驱动名称,Server改为虚拟机IP+端口,同时指定SQL Server身份验证的账号密码(需确保虚拟机中SQL Server已启用混合身份验证):
con <- DBI::dbConnect( odbc::odbc(), Driver = "ODBC Driver 17 for SQL Server", Server = "10.211.55.4,1433", # 替换为你的虚拟机IP和端口 Database = "CustomerSalesDW", UID = "你的SQL Server用户名", PWD = "你的SQL Server密码" )
内容的提问来源于stack exchange,提问作者Amayavne
相关产品推荐
相关产品推荐

