【问题标题】:Connect to a SQL Server database through RODBC通过 RODBC 连接到 SQL Server 数据库
【发布时间】:2017-04-19 21:30:15
【问题描述】:

我的问题与

有关

Trying to connect to an ODBC server using RODBC in ubuntu

和

How to specify include and lib directories when locally installing RODBC?

但我找不到合适的答案。

我想使用 RODBC 连接到远程服务器上的 SQL Server 数据库。

我已经安装了unixodbc和freetds,可以在终端用T-SQL连接,所以连接存在。

但是当尝试在 R 中连接时(所有敏感信息已被 *** 替换):

odbcConnect(dsn="TESTSQL", uid=***, pwd=***)

我明白了:

Warning messages:
1: In RODBC::odbcDriverConnect("DSN=TESTSQL;UID=***;PWD=***") : [RODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open         lib '/usr/local/Cellar/freetds/0.95.18/lib/libtdsodbc.so' : file not found
2: In RODBC::odbcDriverConnect("DSN=TESTSQL;UID=***;PWD=***") :
  ODBC connection failed

odbc.ini 文件是:

[ODBC Data Sources]
TESTSQL     = Test database

[TESTSQL]
Driver      = MSSQL
Servername  = ***.**.**.**
Port        = **
Database    = ****
TDS_Version = 8.0

我已经安装了最新版本的 freetds,即 1.00.27,因此我很惊讶这个库 libtdsodbc.so 丢失了。

这正常吗?您会建议安装 0.95.18 版本还是继续使用 1.00.27 并查找缺少的库?

【问题讨论】:

  • 如果你安装了这个库,你在哪里找到libtdsodbc.so?根据错误消息,我的猜测是它不在/usr/local/Cellar/... 之下。 (如果您不知道如何找到它,请尝试local libtdsodbc.so,或者,如果失败,请尝试grep libtdsodbc.so /var/lib/dpkg/info/*list,或者如果绝望,请尝试find / -type f -iname libtdsodbc.so。)
  • 可能想在错误中隐藏您的用户名和密码
  • 我曾寻找 libtdosbc.so,但没有成功,使用 grep 并找到: grep libtdsodbc.so /var/lib/dpkg/info/*list grep: /var/lib/dpkg/info/ *list: 没有这样的文件或目录我用 brew install --with-tdsver=8.0 --with-msdblib --with-unixodbc=/usr/local/Cellar/unixodbc/2.3.4/freetds Ian: infos已从消息中删除,谢谢

标签: sql-server r odbc freetds rodbc


【解决方案1】:

我不得不删除 freetds:

brew remove freetds

然后重新安装它,指定 --with-unixodbc 以创建 libtsdodbc.so:

brew install freetds --with-unixodbc

在 odbc.ini 中,我必须注意不要混淆“Server”和“Servername”,并将驱动程序链接到 libtdsodbc.so,以便我的 odbc.ini 看起来像:

[ODBC Data Sources]
TESTSQL     = Test database

[TESTSQL]
Driver      = /usr/local/lib/libtdsodbc.so
Server      = ***.**.**.**
Port        = **
Database    = ****
TDS_Version = 8.0

并使用 RODBC 包连接

ch1 <- odbcConnect(dsn="TESTSQL", uid=***, pwd=***)
> ch1
RODBC Connection 5
Details:
  case=nochange
  DSN=TESTSQL
  UID=****
  PWD=******

有效!

此页面的更多详细信息

http://eriqande.github.io/2014/12/19/setting-up-rodbc.html

【讨论】:

    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多