Целью является чтение данных с сервера 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. Пожалуйста, спросите, следует ли предоставить более подробную информацию.