setwd("/mnt/mountpoint/abc/")
sqlServerConnString <- "SERVER=server;DATABASE=sqldwdb;UID=xyz;PWD=abc;"
sqlServerDataDS <- RxSqlServerData(sqlQuery = "SELECT * FROM xyz",
connectionString = sqlServerConnString)
sqlServerDataDF <- rxImport(sqlServerDataDS)
Das ist mein Code. Ich bekomme den Folgefehler in R
[unixODBC] [Treibermanager] Lib 'SQL Server' kann nicht geöffnet werden: Datei nicht gefunden
[unixODBC] [Driver Manager] Verbindung ist nicht vorhanden ODBC Fehler in SQLDisconnect Datenquelle konnte nicht geöffnet werden. Fehler in doTryCatch (return (expr), name, parentenv Handler): Datenquelle konnte nicht geöffnet werden.
Ich habe den MSSQL- und den unixODBC-Treiber auf meinem Linux-Computer installiert, und er wird auch in der Datei /etc/odbc.ini erneut ausgewählt
Kann mir bitte jemand dabei helfen?
Ich habe den gleichen Fehler erhalten, als ich den Code für die Verbindung zu MSSQLSERVER unterbrachte
library(RODBC)
dbconnection <- odbcDriverConnect("Driver=SQL Server;Server=192.168.76.60; Database=kaggle;Uid=sa; Pwd=1234")
Es wirft mir zu
[unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found
Warum wurde dieser Fehler geworfen? Antwort: Wenn der richtige Wert für den Versionsnamen ODBC nicht auf den Treiberwert gesetzt wird.
Woher bekommen wir Treiber ODBC Versionsname
im Ordner "/ etc" finden Sie die Datei "odbcinst.ini", öffnen Sie sie und überprüfen Sie den Versionsnamen
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.1.so.0.1
UsageCount=1
also habe ich ODBC Treibername von hier, es wird "ODBC-Treiber 17 für SQL Server" Dann modifiziere ich meine Verbindungszeichenfolge
library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 17 for SQL Server;Server=192.168.76.60; Database=kaggle;Uid=sa; Pwd=1234")
Und es funktioniert gut
In meinem Fall hat die Antwort von Zaynul leider nicht funktioniert. Aber es half mir, einen anderen Weg zu finden. Ich verwende sqlalchemy und konnte erfolgreich eine Verbindung über den Treiberpfad herstellen:
engine = create_engine('mssql+pyodbc://sa:******@localhost:1433/dbCVServer?driver=/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1', echo=True)
engine.execute('select 1')
EDIT: Ich war mit dieser Lösung nicht zufrieden, da sich der Dateiname des Treibers ändern konnte. Daher gelang es mir, die Bibliothek zu ändern, mit der do pymssql verbunden wird.
engine = create_engine('mssql+pymssql://sa:******@localhost:1433/dbCVServer')
und es hat auch gut funktioniert. =]
EDIT 2: Eine andere Erkennung, die eine Verbindung zu einer benannten Instanz herstellt, zum Beispiel für Benutzer, die SQL Express verwenden.
engine = create_engine('mssql+pymssql://mssql+pymssql://localhost\SQLEXPRESS/dbCVServer')