Я пытаюсь выполнить некоторую работу в Интернете с помощью служб машинного обучения, используя пакет RCurl
для R на SQL 2017. Вот пример кода sp_execute_external_script
, который я пробовал:
EXEC sp_execute_external_script
@language = N'R',
@script = N'library(RCurl)
library(XML)
url <- "http://www.anywebsite.com/"
tables = getURL(url)
tables <- readHTMLTable(tables, header = TRUE, as.data.frame = TRUE, stringsAsFactors = F)
OutputDataSet <- as.data.frame(tables[1])'
WITH RESULT SETS UNDEFINED;
Я получаю следующую ошибку
Сообщение 39004, уровень 16, состояние 20, строка 0 Произошла ошибка сценария 'R'
во время выполнения sp_execute_external_script с помощью HRESULT
0x80004004. Сообщение 39019, Уровень 16, Состояние 2, Строка 0 Внешний сценарий
произошла ошибка: загрузка требуемого пакета: битопс Ошибка в функции
(type, msg, asError = TRUE): не удалось подключиться к
www.anywebsite.com порт 80: Плохой доступ Вызовы: источник ...
getURL -> curlPerform -> .Call -> -> fun
Ошибка в выполнении. Проверьте вывод для получения дополнительной информации. Ошибка в
eval (expr, envir, enclos): Ошибка в выполнении. Проверьте вывод
для дополнительной информации. Вызовы: источник -> withVisible -> eval -> eval ->
.Выполнение вызова приостановлено
В коде sp_execute_external_script
, если я изменю строку URL с «http» на «https», ошибка, по сути, та же, но вместо этого она ссылается на port 443
.
Первоначальная мысль: у меня проблема с брандмауэром. Действительно, если я выключу брандмауэр Windows, sp_execute_external_script
будет успешным.
Итак ... для какого exe нужно разрешение?
Я попытался добавить исключения для sqlservr.exe
(служба ядра базы данных) и launchpad.exe
(панель запуска SQL Server). Ни одна попытка не удалась.
Другие примечания:
Код R
может быть успешно запущен в RStudio, что исключение в брандмауэре.
Это среда Windows 10 с брандмауэром Защитника Windows.
Обновление
Как вы видите ниже, я принял ответ. Вот как это выглядит в моей среде Windows 10: