程序包RCurl无法通过sp_execute_external_script

时间:2018-11-04 22:02:16

标签: r sql-server sql-server-2017 microsoft-r

我正在尝试使用RCurl软件包在SQL 2017上使用Machine Learning Services进行一些Web抓取。这是我尝试过的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”脚本错误   在使用HRESULT执行'sp_execute_external_script'期间   0x80004004。消息39019,级别16,状态2,第0行外部脚本   发生错误:正在加载所需的软件包:bitops功能错误   (类型,msg,asError = TRUE):无法连接到   www.anywebsite.com端口80:访问错误呼叫:源...   getURL-> curlPerform-> .Call->-> fun

     

执行错误。检查输出以获取更多信息。错误中   eval(expr,envir,enclos):执行错误。检查输出   了解更多信息。调用:来源-> withVisible->评估->评估->   。通话执行停止

sp_execute_external_script代码中,如果我将URL字符串从“ http”更改为“ https”,则错误基本上是相同的,但是它引用了port 443。 最初的想法是我遇到了防火墙问题。确实,如果我关闭Windows防火墙,sp_execute_external_script就会成功。
那...什么exe需要权限?
我尝试为sqlservr.exe(数据库引擎服务)和launchpad.exe(SQL Server启动板)添加例外。两次尝试均未成功。

其他说明: R代码可以在RStudio中成功运行,RStudio在防火墙中是一个例外。 这是带有Windows Defender防火墙的Windows 10环境。

更新
如下所示,我已经接受了答案。这是我的Windows 10环境中的外观: Windows Defender Firewall with Advanced Security - Outbound Rules

1 个答案:

答案 0 :(得分:1)

您需要禁用Windows firewall rule that is automatically installed when Machine Learning Services is added

出站防火墙规则的名称类似于“阻止SQL Server实例MSSQLSERVER中的R本地用户帐户访问网络”