我正在尝试使用 RODBC 在 cygwin 下从 R 连接到 SQL Server 数据库。
我已经安装了libiobbc
and libiodbc-devel
,据我了解,它提供了 RODBC 包所需的驱动程序管理器。
我安装了freetds
,据我了解,它提供了一个可以连接到 MS SQL 服务器数据库的 ODBC 驱动程序。我使用它的tsql
命令行工具来确认我可以连接到 SQL Server。
我现在了解将驱动程序管理器 (iODBC) 指向驱动程序 (freeTDS) 的任务,以便我可以从 R 的RODBC
库连接到 SQL Server 数据库
freeTDS的用户指南提示 freeTDS 提供的驱动程序应该是 at /usr/local/freetds/lib/libtdsodbc.so
,并且类似下面的内容应该将此驱动程序定义为 idobc:
;
; odbcinst.ini
;
[FreeTDS]
Driver = /usr/local/freetds/lib/libtdsodbc.so
但我libtdsodbc.so
的系统上没有,而且 cygwin 包freetds
似乎没有提供它(已安装二进制文件和支持文件的列表)
如何配置 idobc 以使用 freeTDS 驱动程序连接到 MS SQL?
编辑
一位同事位于我/lib/cygtdsodbc.dll
的/usr/lib/cygtdsodbc.dll
系统上。这可能是 cygwin 的等价物libtdsodbc.so
吗?
我创建了一个odbcinst.ini
包含以下内容的文件来定义驱动程序:
[ODBC Drivers]
FreeTDS = Installed
[FreeTDS]
Driver = /usr/lib/cygtdsodbc.dll
和一个odbc.ini
定义数据源的文件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
检查
$ iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0812.0326
Enter ODBC connect string (? shows list): ?
DSN | Driver
------------------------------------------------------------------------------
my_db | FreeTDS
Enter ODBC connect string (? shows list): my_db
1: SQLDriverConnect = [iODBC][Driver Manager]Driver's SQLAllocEnv() failed (0) SQLSTATE=IM004
1: ODBC_Connect = [iODBC][Driver Manager]Driver's SQLAllocEnv() failed (0) SQLSTATE=IM004