R:[unixODBC] [驱动程序管理器]无法打开lib'SQL Server':找不到文件

Son*_*nal 8 sql-server r microsoft-r

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

这是我的代码.我在R中得到了跟随错误

[unixODBC] [驱动程序管理器]无法打开lib'SQL Server':找不到文件

[unixODBC] [驱动程序管理器]连接不存在SQLDisconnect中的ODBC错误无法打开doTryCatch中的数据源.错误(return(expr),name,parentenv,handler):无法打开数据源.

我在我的linux机器上安装了MSSQL和unixODBC驱动程序,它也在/etc/odbc.ini文件中被重新选中

有人可以帮我吗?

Zay*_*hin 11

当我在下面的代码中连接到MSSQLSERVER时遇到了相同的错误

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

丢给我

[unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found
Run Code Online (Sandbox Code Playgroud)

为什么会引发此错误? 答:当我们无法在驱动程序值上输入正确的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
Run Code Online (Sandbox Code Playgroud)

所以我从这里得到了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")
Run Code Online (Sandbox Code Playgroud)

而且效果很好

  • /etc/odbcinst.ini中的信息从何而来?在我的机器上,该文件为空。在查看该文件之前,您是否做了任何配置odbc驱动程序的工作? (5认同)
  • 我使用了这里的说明(https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql- server-ver15) 安装驱动程序 (5认同)