RODBC erkennt meine ODBC-Einstellungen nicht
Ich verwende R 2.15.2 auf einem Red Hat Linux 6-Server. Mein Ziel ist es, über RODBC eine Verbindung zu einer MS SQL Server-Datenbank auf einem anderen Computer herzustellen. Ich habe meine Recherche durchgeführt und die Linux-Version des MS SQL ODBC-Treibers von heruntergeladen und installiertdie microsoft support website. Ich musste unixODBC Version 2.3.0 aus dem Quellcode erstellen, da es vom Windows-Treiber benötigt wird und noch nicht in den RHL-Repos enthalten ist (die Repo-Version ist 2.2.14).
Wie auch immer, nach einigem Hin und Her habe ich endlich den Treiber installiert und richtig konfiguriert und kann mich erfolgreich mit der SQL Server-Datenbank über eine verbindenisql
Befehl:
$ isql -v test testuser testpass
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
Also weiß ich, dass ich meine habeodbc.ini
undodbcinst.ini
Dateien richtig eingerichtet.
Wenn ich jedoch versuche, von R aus auf die ODBC-Verbindung zuzugreifen, geschieht Folgendes:
> 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
Hier ist das Ergebnis derodbcDataSources
Befehl in R:
> odbcDataSources()
named character(0)
Ich habe einige Nachforschungen angestellt und denke, die Lösung (obwohl ich mich irren könnte) hat möglicherweise etwas mit der richtigen Konfiguration der ODBC-Umgebungsvariablen zu tun, damit RODBC weiß, wo sie zu finden sindodbc.ini
. Basierend auf meinen Recherchen habe ich die folgenden Umgebungsvariablen gefunden, die relevant sein könnten:$ODBCINI, $ODBCSYSINI, $ODBC_ROOT $ODBC_INCLUDE, and $ODBC_LIBS.
Ich habe eine vernünftige Vorstellung davon, worauf diese eingestellt werden sollten, bin mir aber nicht sicher, wie ich sie dauerhaft einstellen soll, damit RODBC erkennen kann, wo sich die entsprechenden Dateien befinden.
Kann mir jemand etwas Licht ins Dunkel bringen? Ich bin nicht sicher, ob ich richtig verstehe, wie Umgebungsvariablen unter Linux funktionieren und insbesondere warumisql
hat keine Probleme beim Verbinden, aberRODBC
kann nicht einmal den Treiber / die Datenquelle finden.
ANMERKUNG: Wenn ich die Repoversion von unixODBC installiert hätte, würde RODBC mit der gut installiereninstall.packages('RODBC')
Befehl in R. Nach der Installation von unixODBC 2.3.0 aus dem Quellcode schlug die RODBC-Installation jedoch aufgrund eines Abhängigkeitsproblems fehl, und ich musste RODBC aus dem Quellcode mithilfe von installierenAnleitung hier gepostet. Ist es möglich, dass ich ODBC anfangs nicht richtig konfiguriert habe und deshalb habe ich jetzt Probleme?