无法从 RStudio 连接到 Microsoft SQL 服务器

无法从 RStudio 连接到 Microsoft SQL 服务器

目的是在 RStudio 中从 Microsoft SQL 服务器读取数据。我在 Windows 上。所以我有:

  1. 已安装 RODBC 包;
  2. 创建指向我需要从中读取数据的 SQL 服务器的 ODBC DSN。

我可以成功连接到服务器并通过 Windows 上的标准 R(RGUI)读取数据。我可以定义有odbcConnect()odbcDriverConnect()无错误的连接。例如:

> con <- odbcConnect("SQLB")
> as.list(odbcGetInfo(con))
$DBMS_Name
[1] "Microsoft SQL Server"

$DBMS_Ver
[1] "09.00.5000"

$Driver_ODBC_Ver
[1] "03.52"

$Data_Source_Name
[1] "SQLB"

$Driver_Name
[1] "SQLSRV32.DLL"

$Driver_Ver
[1] "06.03.9600"

$ODBC_Ver
[1] "03.80.0000"

$Server_Name
[1] "SQLB\\SQLB"

如果我在 RStudio 中执行相同操作,它总是会失败并显示错误消息:

> con <- odbcConnect("SQLB")
Warning messages:
1: In RODBC::odbcDriverConnect("DSN=SQLB") :
  [RODBC] ERROR: state 08001, code 17, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.
2: In RODBC::odbcDriverConnect("DSN=SQLB") :
  [RODBC] ERROR: state 01000, code 67, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
3: In RODBC::odbcDriverConnect("DSN=SQLB") : ODBC connection failed

返回错误消息平均需要 16.5 秒。

> require(microbenchmark)
> microbenchmark(odbcConnect("SQLB"), times = 10L)
Unit: seconds
                expr      min       lq     mean  median       uq      max neval
 odbcConnect("SQLB") 16.52802 16.52953 16.53059 16.5298 16.53141 16.53639    10
There were 30 warnings (use warnings() to see them)

我尝试过其他驱动程序,但情况是一样的 - 它们都适用于 R,但无法用于 RStudio。我不明白为什么它在 R 中有效,但在 RStudio 中无效。请询问是否应提供更多详细信息。

答案1

此解决方案有效期为一个月。它开始对 R 和 RStudio 都失效。可能有一些我不知道的安全策略更改。


这个解决方案很不寻常。之前我的 RStudio 安装在

C:\Softs\RStudio\bin

我在

C:\Users\MLiberts\Documents\RStudio-1.0.44\bin

问题就解决了。请记住,我仍然在使用 RStudio 的旧设置,因为它们存储在

C:\Users\MLiberts\AppData\Local\RStudio-Desktop

我没有改变它们。

因此,Windows 8 似乎根据可执行文件的存储位置暗示了不同的权限。我对 有完全权限,C:\Users\MLiberts\Documents但我没有 完全权限,C:\Softs但是我可以在那里读取和写入。

C:\Softs\RStudio>icacls bin
bin BUILTIN\Administrators:(I)(OI)(CI)(F)
    NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
    BUILTIN\Users:(I)(OI)(CI)(RX)
    NT AUTHORITY\Authenticated Users:(I)(M)
    NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)

C:\Users\MLiberts\Documents\RStudio-1.0.44>icacls bin
bin NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
    BUILTIN\Administrators:(I)(OI)(CI)(F)
    CSPDOM\mliberts:(I)(OI)(CI)(F)

答案2

解决方案是在 中以管理员身份安装 R 和 RStudio C:\Program Files\

相关内容