RODBC não reconhecendo minhas configurações odbc
Estou executando o R 2.15.2 em um servidor Red Hat Linux 6. Meu objetivo é se conectar a um banco de dados do MS SQL Server em outra máquina via RODBC. Eu fiz minha pesquisa e baixei e instalei a versão linux do driver MSBC ODBC deo site de suporte da microsoft. Eu tive que construir unixODBC versão 2.3.0 a partir da fonte, porque é exigido pelo driver do Windows e não está no repositório RHL ainda (a versão do repo é 2.2.14).
De qualquer forma, depois de um pouco de trabalho, finalmente consegui instalar o driver e configurá-lo adequadamente, e posso me conectar com sucesso ao banco de dados do SQL Serverisql
comando:
$ isql -v test testuser testpass
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
então eu sei que tenho meuodbc.ini
eodbcinst.ini
arquivos corretamente configurados.
No entanto, quando tento acessar a conexão ODBC de dentro de R, acontece o seguinte:
> 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
Aqui está o resultado doodbcDataSources
comando em R:
> odbcDataSources()
named character(0)
Eu tenho feito algumas pesquisas e acho que a solução (embora eu possa estar errada) pode ter algo a ver com a configuração adequada das variáveis de ambiente ODBC para que o RODBC saiba onde encontrarodbc.ini
. Com base na minha pesquisa, encontrei as seguintes variáveis de ambiente que podem ser relevantes:$ODBCINI, $ODBCSYSINI, $ODBC_ROOT $ODBC_INCLUDE, and $ODBC_LIBS.
Eu tenho uma idéia razoável do que deve ser definido, mas não tenho certeza de como defini-las permanentemente e para que o RODBC possa reconhecer onde encontrar os arquivos apropriados.
Alguém pode lançar alguma luz sobre isso para mim? Eu não tenho certeza se entendi corretamente como as variáveis de ambiente funcionam no linux, e particularmente porqueisql
não tem problemas para se conectar, masRODBC
não é possível encontrar o driver / fonte de dados.
NOTA: quando eu tinha a versão repo do unixODBC instalado, RODBC iria instalar muito bem usando oinstall.packages('RODBC')
comando em R. No entanto, depois de instalar o unixODBC 2.3.0 da origem, a instalação do RODBC falharia devido a um problema de dependência, e eu tive que instalar o RODBC a partir da origem usando o comandoguia postado aqui. É possível que eu não tenha configurado corretamente o ODBC e é por isso que estou tendo problemas agora?