web-dev-qa-db-ja.com

R:[unixODBC] [Driver Manager] lib 'SQL Server'を開けません:ファイルが見つかりません

setwd("/mnt/mountpoint/abc/")
sqlServerConnString <- "SERVER=server;DATABASE=sqldwdb;UID=xyz;PWD=abc;"
sqlServerDataDS <- RxSqlServerData(sqlQuery = "SELECT * FROM xyz",
                               connectionString = sqlServerConnString)
sqlServerDataDF <- rxImport(sqlServerDataDS)

これは私のコードです。 Rでフォローインエラーが発生しています

[unixODBC] [ドライバーマネージャー]ライブラリ 'SQL Server'を開けません:ファイルが見つかりません

[unixODBC] [Driver Manager]接続が存在しませんODBC SQLDisconnectのエラーはデータソースを開けませんでした。doTryCatch(return(expr)、name、parentenv、handler)のエラー:データを開けませんでしたソース。

LinuxマシンにMSSQLおよびunixODBCドライバーをインストールしましたが、/ etc/odbc.iniファイルでも反映されています

誰かがこれで私を助けてくれますか?

8
Sonal

MSSQLSERVERへの接続用のコードを下に置くと、同じエラーが発生しました

library(RODBC)
dbconnection <- odbcDriverConnect("Driver=SQL Server;Server=192.168.76.60; Database=kaggle;Uid=sa; Pwd=1234")

それは私に投げます

[unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found

なぜこのエラーがスローされますか?回答:適切なODBCバージョン名をドライバー値に設定できない場合。

ドライバーを取得できる場所からODBCバージョン名

「/ etc」フォルダ内に「odbcinst.ini」ファイルがあり、それを開いてバージョン名を確認します

[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

だから私はODBCここからドライバ名、それは「SQL Server用ODBCドライバ17」になりますそして、私は接続文字列を変更します

library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 17 for SQL Server;Server=192.168.76.60; Database=kaggle;Uid=sa; Pwd=1234")

そしてそれはうまく動作します

11

残念ながら、Zaynulの回答はうまくいきませんでした。しかし、別の方法を見つけるのに役立ちました。私はsqlalchemyを使用していますが、ドライバーパスを渡す接続を正常に作成できました。

_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')
_

編集:ドライバーのファイル名が変更される可能性があるため、その解決策に満足していなかったため、pymssqlの接続に使用するライブラリーを変更できました

engine = create_engine('mssql+pymssql://sa:******@localhost:1433/dbCVServer')

それもうまくいきました。 =]

編集2:別の検出、名前付きインスタンスに接続、たとえばsql expressを使用している場合

engine = create_engine('mssql+pymssql://mssql+pymssql://localhost\SQLEXPRESS/dbCVServer')