尝试在ubuntu中使用RODBC连接到ODBC服务器

时间:2012-06-18 13:41:52

标签: sql sql-server r odbc

我收到错误:

 [RODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found
 2: In odbcDriverConnect("driver={SQL Server};server=*******;database=****;trusted_connection=true") :
 ODBC connection failed

任何人都可以提供有关安装ODBC驱动程序的详细说明,以便与RODBC一起使用吗?

注意:我正在尝试连接到MSSQL服务器

2 个答案:

答案 0 :(得分:8)

在我的工作中,我们使用Centos 5.8。当我需要连接到我们的MS-SQL服务器时,我使用FreeTDS驱动程序。我在这里谈一谈:https://stackoverflow.com/a/10196098/1332389,包括我安装的软件包和依赖项。

示例连接字符串可能如下所示:

data_odbc <- odbcDriverConnect(connection="Driver=FreeTDS;
                                           Server=dataserver1\\instancename(default: master);
                                           Port=1433;        
                                           Database=database_01;
                                           Uid=data_mgmt;
                                           Pwd=placeholder")

我们将odbcinst.ini文件(在/ etc /中)配置为:

# FreeTDS Drivers
# Manual setup, used for MS SQL
[FreeTDS]
Description     = FreeTDS for MSSQL
# 32 bit
Driver          = /usr/lib/libtdsodbc.so
Setup           = /usr/lib/libtdsS.so
# 64 bit
Driver64        = /usr/lib64/libtdsodbc.so
Setup64         = /usr/lib64/libtdsS.so
FileUsage = 1

自设置以来我没有遇到任何问题。希望这会有所帮助 - 如果您有更多问题,我可以尝试回答。

答案 1 :(得分:3)

我在Linux上使用远程R会话遇到类似的问题,使用RJServer,在Eclipse下从StatET连接到它。错误看起来像这样:

[RODBC]错误:状态01000,代码0,消息[unixODBC] [驱动程序管理器]无法打开lib'/usr/local/easysoft/sqlserver/lib/libessqlsrv.so':找不到文件

解决此问题的难点在于错误消息具有误导性:消息中显示的文件完全可见(我可以测试它)。 “秘密”是“找不到文件”是指另一个依赖库。

结论:我在远程会话中使用的LD_LIBRARY_PATH中添加了一些元素,在我的例子中它是: 的/ usr /本地/斯软件/的unixODBC / lib中:在/ usr /本地/斯软件/ lib中

要弄清楚你需要添加什么,你应该看到缺少的东西。在相关库上使用“ldd”命令。