我在Red Hat Linux 6服务器上运行v 2.15.2。 我的目标是通过RODBC连接到MS SQL Server数据库另一台机器上。 我做我的研究,并下载和安装从MS SQL ODBC驱动程序的Linux版本的微软支持网站 。 我到了从源代码编译的unixODBC版本2.3.0,因为它是由Windows驱动程序需要的,而不是在RHL尚未回购(回购版本2.2.14是)。
总之,一些工作之后,我终于安装并正确配置的驱动程序,我可以通过一个成功地连接到SQL Server数据库isql
命令:
$ isql -v test testuser testpass
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
所以我知道我有我的odbc.ini
和odbcinst.ini
文件正确设置。
然而,当我尝试从R内的ODBC连接,将出现以下情况:
> test <- odbcDriverConnect('DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass')
Warning messages:
1: In odbcDriverConnect("DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass") :
[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data
source name not found, and no default driver specified
2: In odbcDriverConnect("DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass") :
ODBC connection failed
这里的结果odbcDataSources
在R指令:
> odbcDataSources()
named character(0)
我一直在做一些研究,我认为解决的办法(虽然我可能是错的),可能有一些做正确配置ODBC环境变量,这样RODBC知道去哪里找odbc.ini
。 根据我的研究,我发现下面的环境变量,可能是相关的: $ODBCINI, $ODBCSYSINI, $ODBC_ROOT $ODBC_INCLUDE, and $ODBC_LIBS.
我有什么,这些应该被设置为一个合理的想法,但我不知道如何永久地设置他们,让RODBC能够识别在哪里可以找到相应的文件。
任何人都可以提供一些线索这对我来说? 我不知道我正确理解环境变量在Linux中是如何工作的,特别是为什么isql
具有连接没有问题,但RODBC
甚至无法找到驱动程序/数据源。
注:当我已经安装了unixODBC的回购版本,RODBC会使用安装就好install.packages('RODBC')
在R命令。然而,我从源代码安装了unixODBC 2.3.0之后,RODBC安装会失败,因为依赖问题,我不得不使用从源代码安装RODBC 这里发布指南 。 是否有可能我没能正确地配置ODBC开始用,这就是为什么我有现在的麻烦?