2013-08-26 16 views
4

Я пытаюсь использовать RODBC для подключения к базе данных SQL Server из R под cygwin.Настройка iodbc для использования FreeTDS для MS SQL Server под cygwin

Я установил libiobbc и libiodbc-devel, которые, как я понимаю, предоставляют менеджеру драйверов, который необходим пакет RODBC.

Я установил freetds, что я понимаю, предоставляет драйвер ODBC, который может подключаться к базе данных MS SQL. Я использовал свой инструмент командной строки tsql, чтобы подтвердить, что могу подключиться к SQL Server.

теперь я понимаю задачу быть направлен менеджер драйверов (iODBC) с водителем (FreeTDS), так что я могу сделать соединение с базой данных SQL Server из библиотеки АиРа RODBC

В 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 не предоставить i t (listing of installed binaries and support files)

Как настроить idobc для использования драйвера freeTDS для подключения к MS SQL?

EDIT

Коллега расположен /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 
+0

'/ usr/lib/cygtdsodbc.dll' является эквивалентом' libtdsodbc.so' (и '/ usr/lib' =='/lib' на Cygwin). Это похоже на проблему конфигурации; см. [глава 4 Руководства пользователя FreeTDS] (http://www.freetds.org/userguide/prepodbc.htm) для советов. – Yaakov

ответ

0

iodbctest программа указывает, что не может найти my_db; это ваш ключ, что он настроен неправильно.

Обратитесь к Руководству пользователя FreeTDS, в частности, о том, какие свойства могут и не могут быть в odbc.ini. Вам нужен сервер или имя сервера в вашем odbc.ini, в зависимости от того, хотите ли вы использовать файл freetds.conf для идентификации сервера.

 Смежные вопросы

  • Нет связанных вопросов^_^