Невозможно подключиться к серверу Microsoft SQL из RStudio
Целью является чтение данных с сервера Microsoft SQL в RStudio. Я на Windows. Так что я:
- Установленный пакет RODBC;
- Создан 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 ответа
Решение состоит в том, чтобы установить R и RStudio в качестве администратора в C:\Program Files\
,
Это решение было действительно в течение одного месяца. Это начало терпеть неудачу и для 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)