我试图将MacOS 10.12上的RStudio连接到网络上的SQL Server实例。
我尝试通过install.packages("RODBC")
安装RODBC。这失败了错误:
configure: error: "ODBC headers sql.h and sqlext.h not found"
我理解Mac OS和RStudio使用iODBC,但这些标题是unixODBC的一部分,所以我通过brew install unixODBC
安装了它。这至少解决了RODBC安装,现在我能够通过library(RODBC)
在RStudio中成功加载该库。
接下来,我从http://odbcmanager.net安装了ODBC Manager,并从Actual Technologies安装了Actual SQL Server驱动程序。然后,我能够设置指向我的本地SQL Server的DSN,在/Library/ODBC/odbc.conf
中看起来像这样:
[ODBC Data Sources]
sqlbox = Actual SQL Server
[sqlbox]
Driver = /Library/ODBC/Actual SQL Server.bundle/Contents/MacOS/atsqlsrv.so
Description = SQLBox
Server = sqlbox.mydomain.com
UserID = myuser
UseKeychain = Yes
ServerName = sqlbox
host = sqlbox.mydomain.com
client charset = UTF-8
现在,当我通过conn<-odbcDriverConnect("sqlbox")
请求R中的连接时,我收到此错误:
Warning messages:
1: In odbcDriverConnect("sqlbox") :
[RODBC] ERROR: state S1092, code 0, message [Actual][SQL Server] Invalid option
2: In odbcDriverConnect("sqlbox") : ODBC connection failed
显然它正在寻找DSN,并加载(或至少找到)实际的驱动程序,但仍然有些东西是关闭的。 ODBC管理器工具没有用于验证连接的“测试”按钮,因此我无法尝试。是否有其他工具可以更好地反馈连接失败的原因?我错过了什么?
答案 0 :(得分:0)
删除系统DSN并将其重新创建为用户DSN(在~/Library/ODBC/odbc.ini
中)似乎已经解决了它。我现在能够连接并从R中提取SQL Server数据。