通过 RODBC 连接到 SQL Server 数据库
Posted
技术标签:
【中文标题】通过 RODBC 连接到 SQL Server 数据库【英文标题】:Connect to a SQL Server database through RODBC 【发布时间】: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已从消息中删除,谢谢
【参考方案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
【讨论】:
以上是关于通过 RODBC 连接到 SQL Server 数据库的主要内容,如果未能解决你的问题,请参考以下文章
RODBC 连接到 Mavericks 上的 SQL Server
SQL Server 查询因 RODBC 连接而失败,在 SQL Server 中工作