Я запускаю R 2.15.2 на сервере Red Hat Linux 6. Моя цель - подключиться к базе данных MS SQL Server на другой машине через RODBC. Я провел исследование и загрузил и установил версию Linux драйвера ODBC MS SQL из веб-сайта поддержки Microsoft. Я должен был создать версию unixODBC версии 2.3.0 из источника, потому что это требуется драйверу Windows и еще не находится в репозиториях RHL (версия репо 2.2.14).
Во всяком случае, после небольшой работы я наконец установил и правильно установил драйвер, и я могу успешно подключиться к базе данных SQL Server с помощью команды isql
:
$ isql -v test testuser testpass
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
поэтому я знаю, что мои файлы odbc.ini
и odbcinst.ini
правильно настроены.
Однако, когда я пытаюсь получить доступ к ODBC-соединению из R, произойдет следующее:
> 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
Здесь результат команды odbcDataSources
в R:
> odbcDataSources()
named character(0)
Я занимаюсь некоторыми исследованиями, и я думаю, что решение (хотя я и ошибаюсь) может иметь какое-то отношение к правильной настройке переменных среды ODBC, чтобы RODBC знал, куда идти, чтобы найти odbc.ini
. Основываясь на моих исследованиях, я нашел следующие переменные среды, которые могут быть релевантными: $ODBCINI, $ODBCSYSINI, $ODBC_ROOT $ODBC_INCLUDE, and $ODBC_LIBS.
У меня есть разумное представление о том, для чего они должны быть установлены, но я не уверен, как их устанавливать постоянно, и поэтому RODBC может распознать где найти соответствующие файлы.
Может ли кто-нибудь пролить свет на это для меня? Я не уверен, что правильно понимаю, как переменные среды работают в Linux, и особенно почему isql
не имеет проблем с подключением, но RODBC
не может даже найти драйвер/источник данных.
ПРИМЕЧАНИЕ. Когда у меня была установлена версия unixODBC для репо, RODBC установил просто отлично, используя команду install.packages('RODBC')
в R. Однако после того, как я установил unixODBC 2.3.0 из исходного кода, установка RODBC завершилась неудачно из-за зависимости и мне пришлось установить RODBC из источника, используя руководство, размещенное здесь. Возможно ли, что я не смог правильно настроить ODBC для начала и почему у меня сейчас проблемы?