我正在尝试MSDN上的SQL Server R服务教程 - 链接如下:
https://msdn.microsoft.com/en-us/library/mt629164.aspx
当我运行rxPredict命令时:
rxPredict(modelObject = logitObj,
data = featureDataSource,
outData = scoredOutput,
predVarNames = "Score",
type = "response",
writeModelVars = TRUE,
overwrite = TRUE)
我收到以下错误:
====== SG01NB-4300092 ( process 1 ) has started run at 2016-07-04 09:43:35.00 ====== [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. Caught exception in file: CxAnalysis.cpp, line: 5682. ThreadID: 13560 Rethrowing. Caught exception in file: CxAnalysis.cpp, line: 5249. ThreadID: 13560 Rethrowing. [Microsoft][ODBC Driver Manager] Connection not open ODBC Error in SQLDisconnect Error in doTryCatch(return(expr), name, parentenv, handler) : [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. Calls: source ... tryCatch -> tryCatchList -> tryCatchOne -> doTryCatch -> .Call Execution halted Error in rxCompleteClusterJob(hpcServerJob, consoleOutput, autoCleanup) : No results available - final job state: failed
我确保我的rxSetComputeContext(cc)正在使用可以创建表的有效用户登录。我也在我正在处理的本地计算机上安装SQL Server,因此它不会成为网络问题。
是否有人遇到此问题并成功运行此语句?
感谢您的回复和帮助!
伊恩
答案 0 :(得分:0)
我发现问题在于outData = scoredOutput语句。如果我设置outData = NULL并将服务器上下文更改为local,我可以从rxPredict生成输出。
我决定用rxSetComputeContext执行rxPredict(" local")获取输出数据帧(outDF),然后使用rxDataStep将其保存回SQL Server(inData = outDF,outFile = scoredOutput,overwrite = TRUE)
rxSetComputeContext("local")
fds <- rxImport(featureDataSource)
outDF <- structure(list(Score = numeric(),
tipped = integer(),
passenger_count = numeric(),
trip_distance = numeric(),
trip_time_in_secs = numeric(),
direct_distance = numeric()),
class = "data.frame")
outDF <- rxPredict(modelObject = logitObj, data = fds, outData = NULL,
predVarNames = "Score", type = "response",
writeModelVars = TRUE, overwrite = TRUE)
# reset the compute context to the server and persist the df result to the table
rxSetComputeContext(cc)
rxDataStep(inData = outDF, outFile = scoredOutput, overwrite=TRUE)
如果有人有更好的方法,请分享并告诉我们!
由于
伊恩
答案 1 :(得分:0)
确保您已提供工作人员/ Launchpad帐户(用于运行R脚本)的权限,以代表您登录SQL Server。有关详细信息,请参阅Enable Implied Authentication for Launchpad Accounts。
答案 2 :(得分:0)
我很久以来一直在处理这个错误。奇怪的是,脚本在我的一个SQL Server 2016虚拟机上运行,而不是在另一个上运行。所以我比较了两台服务器的属性,并确保我没有忘记一些安装后的程序。
部分归功于@ArunGurunathan,我在寻找这些差异时发现了一个异常现象。打开SQL Server计算机本身,并查看防火墙设置 - 我发现有一条规则阻止了对R本地用户帐户的网络访问。我禁用了该规则,我的脚本(rxPredict)运行没有任何错误。
尝试让我知道它是否适合您。
答案 3 :(得分:0)