RODBC nie rozpoznaje moich ustawień ODBC
Używam R 2.15.2 na serwerze Red Hat Linux 6. Moim celem jest połączenie się z bazą danych MS SQL Server na innym komputerze za pośrednictwem RODBC. Przeprowadziłem badania i pobrałem i zainstalowałem wersję linuksową sterownika ODBC MS SQLwitryna pomocy technicznej firmy Microsoft. Mam zbudować unixODBC w wersji 2.3.0 ze źródła, ponieważ jest to wymagane przez sterownik Windows i nie jest jeszcze w repozytoriach RHL (wersja repo to 2.2.14).
W każdym razie, po odrobinie pracy, w końcu udało mi się poprawnie zainstalować i skonfigurować sterownik i mogę pomyślnie połączyć się z bazą danych SQL Server za pośrednictwemisql
dowództwo:
$ isql -v test testuser testpass
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
więc wiem, że mamodbc.ini
iodbcinst.ini
poprawnie skonfigurowane pliki.
Jednak gdy próbuję uzyskać dostęp do połączenia ODBC z poziomu R, dzieje się tak:
> test <- odbcDriverConnect('DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass')
Warning messages:
1: In odbcDriverConnect("DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass") :
[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data
source name not found, and no default driver specified
2: In odbcDriverConnect("DSN=test;Database=RSQLTest01;Uid=testuser;Pwd=testpass") :
ODBC connection failed
Oto rezultatodbcDataSources
polecenie w R:
> odbcDataSources()
named character(0)
Prowadziłem badania i myślę, że rozwiązanie (choć mogłem się mylić) może mieć coś wspólnego z prawidłową konfiguracją zmiennych środowiskowych ODBC, aby RODBC wiedział, gdzie szukać, aby znaleźćodbc.ini
. Na podstawie moich badań znalazłem następujące zmienne środowiskowe, które mogą być istotne:$ODBCINI, $ODBCSYSINI, $ODBC_ROOT $ODBC_INCLUDE, and $ODBC_LIBS.
Mam rozsądne wyobrażenie o tym, co należy ustawić, ale nie jestem pewien, jak je ustawić na stałe, i aby RODBC mógł rozpoznać, gdzie znaleźć odpowiednie pliki.
Czy ktoś może mi na to rzucić trochę światła? Nie jestem pewien, czy dobrze rozumiem, jak zmienne środowiskowe działają w Linuksie, a zwłaszcza dlaczegoisql
nie ma problemu z połączeniem, aleRODBC
nie mogę nawet znaleźć sterownika / źródła danych.
UWAGA: gdy miałem zainstalowaną wersję repozytorium unixODBC, RODBC zainstalowałoby się dobrze, używającinstall.packages('RODBC')
komenda w R. Jednak po zainstalowaniu unixODBC 2.3.0 ze źródła instalacja RODBC nie powiedzie się z powodu problemu zależności i musiałem zainstalować RODBC ze źródła przy użyciuprzewodnik zamieszczony tutaj. Czy to możliwe, że nie udało mi się poprawnie skonfigurować ODBC i dlatego mam teraz problemy?