![无法从 RStudio 连接到 Microsoft SQL 服务器](https://linux22.com/image/1512776/%E6%97%A0%E6%B3%95%E4%BB%8E%20RStudio%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20Microsoft%20SQL%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
目的是在 RStudio 中从 Microsoft SQL 服务器读取数据。我在 Windows 上。所以我有:
- 已安装 RODBC 包;
- 创建指向我需要从中读取数据的 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\
。