Sql server 在OS X 10.10.3上使用实际技术SQL Server驱动程序重新编译RODBC

Sql server 在OS X 10.10.3上使用实际技术SQL Server驱动程序重新编译RODBC,sql-server,r,rodbc,Sql Server,R,Rodbc,我正在尝试重新编译RODBC包,以便可以从OSX10.10.3上的R连接到MS SQL Server。我正在尝试修改我在这里找到的说明,但我不确定应该将$DYLD\u LIBRARY\u PATH=指向何处(我尝试了/LIBRARY/ODBC/和/LIBRARY/ODBC/Actual SQL Server.bundle/Contents/MacOS/,但在任何情况下都无法连接到数据库)。有人成功地做到了吗?另外,重新编译后,我应该使用odbcconnect还是odbcdriverconnect

我正在尝试重新编译RODBC包,以便可以从OSX10.10.3上的R连接到MS SQL Server。我正在尝试修改我在这里找到的说明,但我不确定应该将
$DYLD\u LIBRARY\u PATH=
指向何处(我尝试了
/LIBRARY/ODBC/
/LIBRARY/ODBC/Actual SQL Server.bundle/Contents/MacOS/
,但在任何情况下都无法连接到数据库)。有人成功地做到了吗?另外,重新编译后,我应该使用
odbcconnect
还是
odbcdriverconnect
?我已经使用
odbcconnect
命令在同一台计算机上成功地从Windows VM使用R连接/执行了查询。提前谢谢

我想有人可以举报我发布了一些“不是答案”的东西,但我想我在18个月前的R-SIG-Mac邮件列表档案中发现了一些可能有用也可能无用的材料。它确实明确指出了作者认为二进制文件应该放在哪里。这条评论太长了:

From:   Marc Schwartz <marc_schwartz@me.com>
Subject:    Re: [R-SIG-Mac] RODBC not connecting from my Mac
Date:   October 30, 2013 8:35:24 AM PDT
To:     r-sig-mac@r-project.org R <r-sig-mac@r-project.org>
发件人:马克·施瓦茨
主题:Re:[R-SIG-Mac]RODBC未从我的Mac连接
日期:2013年10月30日太平洋时间上午8:35:24
致:r-sig-mac@r-project.org R
“大家好

我想跟进这条线索,因为我上面提供的信息并不完整,我现在从与Ripley教授的对话中了解到,这些信息是通过在苹果开发者论坛上搜索以及与Real Technologies(AT)技术支持部门的电子邮件交流而在网上找到的

从OS X 10.6(Snow Leopard)开始,苹果从默认操作系统安装中删除了ODBC管理员GUI应用程序,正如我前面提到的。苹果版本过去是,现在仍然可以从Apple.com单独下载,AT人员开始支持并发布名为ODBC Manager的更新版本,我也提到了这一点

然而,事实证明,这只是故事的一部分

从OSX10.8(山狮)开始,苹果开始反对直接支持iODBC。SDK树中10.8版本的XCode中包含的iODBC头文件显然有这方面的迹象,但其他地方没有公开记录,包括XCode发行说明。iODBC的二进制动态库文件仍然存在于10.8版本的/usr/lib中,因此如果例如,如果您想在10.8上使用OS X的RODBC二进制文件,则没有问题。当然,您仍然需要ODBC管理员/管理器GUI来设置DSN配置,除非您手动设置配置文件

没有具体说明原因,但2012年8月,一位苹果代表在苹果开发论坛上发表的一篇文章表明,苹果决定在OS X上反对默认安装iODBC。此回复是给另一位用户的,他注意到了表明这一点的头文件内容,并发布了一条查询Apple ReP建议用户开始考虑去Objx ORG进行OX X二进制代码,在那里可以使用或源代码向前移动。另外,用户应该考虑移动到其他ODBC工具,例如UNIXODBC或使用本机(非ODBC)驱动程序来感兴趣的数据源。 10.9(小牛队),Apple现在已经从默认的OS X安装中完全删除了iODBC。在最新版本的XCode中,iODBC的二进制动态库文件出现在10.9的SDK树中,但头文件已被删除,这给需要从源代码构建依赖iODBC的应用程序的用户带来了问题。但是,有迹象表明,在som将来,即使是iODBC动态库二进制文件也将从XCode发行版中删除。至少在短期内,人们可以将动态库文件从10.9中的SDK树复制/移动到/usr/lib,或者简单地将其符号链接到它们,但如果您没有其他需要,当然这意味着安装XCode只是为了这个目的

上周我从10.8升级到10.9后,在使用带有AT驱动程序的RODBC二进制文件访问我们的Oracle服务器时没有任何问题。因此,我没有初步的依据认为10.9有任何错误

然而,我当时和现在都不知道的是,at最近更新了ODBC驱动程序安装包,以包括iODBC二进制文件,特别是因为苹果公司先前的iODBC弃用决定。如果at驱动程序安装到的系统上没有这些文件(如10.9),AT安装包中的iODBC二进制文件将安装在/usr/lib中,以使AT驱动程序能够正常工作。这对AT来说很重要,因为它们的驱动程序是使用iODBC而不是unixODBC编译的。上周,我在MacBook Pro上更新了10.9版后,碰巧更新了AT驱动程序安装,这使我对AT的看法有偏差10.9上的iODBC支持

因此,正如Mikkel在最初的帖子中指出的那样,人们需要意识到iODBC已经从OSX10.9中完全删除了

正如苹果代表在开发论坛上的回复中所指出的,如果您希望继续在OS X上使用ODBC驱动程序的iODBC,可以选择直接访问iODBC.org。如果您选择购买并使用AT ODBC驱动程序,就像我为Oracle所做的那样,如果没有其他方式,iODBC二进制文件现在将安装在您的系统上。AT installati软件包上还包括ODBC管理器GUI

当然,替代方法是像Mikkel所做的那样转移到unixODBC,要小心选择使用的ODBC驱动程序都是兼容的。如果你选择走这条路,正如我在上面的初始答复中所提到的,你需要从源代码处编译RODBC包,因为默认情况下它是针对iODBC libs为OS X编译的。

感谢Ripley教授的沟通,感谢AT支持人员对当前形势的澄清和社区支持

问候,

马克·施瓦茨“

library(RJDBC)

# jar location
classPath <- 'YOUR_DIR/sqljdbc_4.0/enu/sqljdbc4.jar'
stopifnot(file.exists(classPath))

# init driver
drv <- JDBC(driverClass='com.microsoft.sqlserver.jdbc.SQLServerDriver',
            classPath=classPath)

# connect to db (replace YOUR_DB, user, pword as needed, obviously!)
conn <- dbConnect(drv, "jdbc:sqlserver://YOUR_DB", user, pword)

# now you are ready to run your version of sql_statement
results <- dbGetQuery(conn, sql_statement)
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] RJDBC_0.2-4      rJava_0.9-6      DBI_0.3.1