我正在尝试使用RODBC在cygwin下从R连接到SQL Server数据库。
我安装了libiobbc
和libiodbc-devel
,据我所知,它提供了RODBC软件包所需的驱动程序管理器。
我安装了freetds
,据我所知,它提供了一个可以连接到MS SQL服务器数据库的ODBC驱动程序。我使用其tsql
命令行工具确认我可以建立与SQL Server的连接。
我现在理解将驱动程序管理器(iODBC)指向驱动程序(freeTDS)的任务,这样我就可以从R的RODBC
库连接到SQL Server数据库
User Guide to freeTDS暗示freeTDS提供的驱动程序应该在/usr/local/freetds/lib/libtdsodbc.so
,并且类似下面的内容应该将此驱动程序定义为idobc:
;
; odbcinst.ini
;
[FreeTDS]
Driver = /usr/local/freetds/lib/libtdsodbc.so
但我的系统上没有libtdsodbc.so
,而且似乎cygwin包freetds
没有提供它(listing of installed binaries and support files)
如何配置idobc以使用freeTDS驱动程序连接到MS SQL?
修改
位于我的系统上的/lib/cygtdsodbc.dll
和/usr/lib/cygtdsodbc.dll
的同事。这可能是libtdsodbc.so
的cygwin等价物吗?
我创建了一个odbcinst.ini
文件,其中包含以下内容以定义驱动程序:
[ODBC Drivers]
FreeTDS = Installed
[FreeTDS]
Driver = /usr/lib/cygtdsodbc.dll
和使用上面定义的驱动程序定义数据源odbc.ini
的{{1}}文件:
my_db
运行[ODBC Data Sources]
my_db = FreeTDS
[my_db]
Driver = /usr/lib/cygtdsodbc.dll
Database = db_name
Host = server_dns_name
Port = 1433
检查结果
iodbctest
答案 0 :(得分:0)
iodbctest
程序表示无法找到 my_db ;这是你的线索,它没有正确配置。
再看一下FreeTDS用户指南,特别是odbc.ini
中哪些属性可以和不可以。您需要odbc.ini
中的服务器或 servername 属性,具体取决于您是否要使用freetds.conf
文件来标识服务器。