Настройка iodbc для использования FreeTDS для MS SQL Server под cygwin
Я пытаюсь использовать RODBC для подключения к базе данных SQL Server из R под Cygwin.
Я установил libiobbc
а также libiodbc-devel
, который, как я понимаю, предоставляет диспетчер драйверов, необходимый для пакета RODBC.
Я установил freetds
Я понимаю, что предоставляет драйвер ODBC, который может подключаться к базе данных сервера MS SQL. Я использовал его tsql
инструмент командной строки, чтобы подтвердить, что я могу установить соединение с SQL Server.
Теперь я понимаю задачу указания диспетчера драйверов (iODBC) на драйвер (freeTDS), чтобы я мог подключиться к базе данных SQL Server из R RODBC
библиотека
Руководство пользователя freeTDS указывает на то, что драйвер, предоставляемый freeTDS, должен находиться на /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
1 ответ
iodbctest
программа указывает, что не может найти my_db; это ваша подсказка, что он не настроен правильно.
Посмотрите еще раз на Руководство пользователя FreeTDS, в частности, какие свойства могут и не могут быть в odbc.ini
, Вам нужно свойство сервера или сервера в вашем odbc.ini
в зависимости от того, хотите ли вы использовать freetds.conf
файл для идентификации сервера.