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] [驱动程序管理器]无法打开lib&#39; SQL Server&#39; :找不到文件
[unixODBC] [Driver Manager] Connnection不存在ODBC错误 SQLDisconnect无法打开数据源。错误 doTryCatch(return(expr),name,parentenv,handler):无法打开 数据来源。
我在我的linux机器上安装了MSSQL和unixODBC驱动程序,它也在/etc/odbc.ini文件中被重新选择
有人可以帮我吗?
答案 0 :(得分:4)
当我将下面的代码连接到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版本名称时。
我们可以从此处获取Driver 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")
效果很好
答案 1 :(得分:0)
很不幸,就我而言,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')
编辑:我对这种解决方案不满意,因为驱动程序的文件名可能会更改,所以我设法更改了用于连接do pymssql的库。
engine = create_engine('mssql+pymssql://sa:******@localhost:1433/dbCVServer')
,效果也很好。 =]
编辑2:例如,对于使用sql express的用户,另一个发现连接到命名实例。
engine = create_engine('mssql+pymssql://mssql+pymssql://localhost\SQLEXPRESS/dbCVServer')