我正在尝试使用 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
定义数据源的文件 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
最佳答案
iodbctest
程序提示找不到 my_db ;这是您未正确配置的线索。
再看一下 FreeTDS 用户指南,特别是在 odbc.ini
中哪些属性可以和不可以。 .您的 odbc.ini
中需要一个 server 或 servername 属性。 ,取决于您是否要使用您的 freetds.conf
文件来识别服务器。
关于sql-server - 配置 iodbc 以在 cygwin 下为 MS SQL Server 使用 FreeTDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448631/