1

Целью является чтение данных с сервера Microsoft SQL в RStudio. Я на Windows. Так что я:

  1. Установленный пакет RODBC;
  2. Создан ODBC DSN, указывающий на сервер SQL, с которого мне нужно прочитать данные.

Я могу успешно подключиться к серверу и читать данные через стандартный R на Windows (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. Пожалуйста, спросите, следует ли предоставить более подробную информацию.

2 ответа2

1

Это решение было действительно в течение одного месяца. Это начало терпеть неудачу и для R и для RStudio. Возможно, произошли некоторые изменения в политике безопасности, о которых я не знал.


Решение довольно необычное. Ранее моя установка RStudio была в

C:\Softs\RStudio\bin

Я сделал новую установку RStudio в

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)
0

Решением является установка R и RStudio в качестве администратора в C:\Program Files\ .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .