Настройка 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 файл для идентификации сервера.

Другие вопросы по тегам