【发布时间】:2018-06-07 03:32:09
【问题描述】:
我有以下查询
DECLARE @speedmodel varbinary(max) = (SELECT [model] FROM [dbo].[stopping_distance_models] WHERE model_name = 'latest model');
EXEC sp_execute_external_script
@language = N'R'
, @script = N'
current_model <- unserialize(as.raw(speedmodel));
new <- data.frame(NewCarData);
predicted.distance <- rxPredict(current_model, new);
str(predicted.distance);
OutputDataSet <- cbind(new, ceiling(predicted.distance));
'
, @input_data_1 = N' SELECT speed FROM [dbo].[NewCarSpeed] '
, @input_data_1_name = N'NewCarData'
, @params = N'@speedmodel varbinary(max)'
, @speedmodel = @speedmodel
WITH RESULT SETS (([new_speed] INT, [predicted_distance] INT))
在运行此代码时,我收到一条错误消息
消息 39004,级别 16,状态 20,第 1 行出现“R”脚本错误 在使用 HRESULT 执行“sp_execute_external_script”期间 0x80004004。 Msg 39019, Level 16, State 1, Line 1 外部脚本 发生错误:反序列化错误(as.raw(speedmodel)):读取错误 调用:source -> withVisible -> eval -> eval -> unserialize
ScaleR 中的错误。检查输出以获取更多信息。错误 eval(expr,envir,enclos):ScaleR 中的错误。检查输出 更多信息。调用:source -> withVisible -> eval -> eval -> .Call Execution halted Msg 11536, Level 16, State 1, Line 2 EXECUTE 语句失败,因为它的 WITH RESULT SETS 子句指定了 1 结果集,但语句在运行时只发送了 0 个结果集 时间。
为什么我会收到此错误?
【问题讨论】:
-
根据错误,它看起来像是在 unserialize 调用中出现读取错误。模型是如何序列化并存储在数据库中的?可以分享一下这段代码吗?
标签: sql-server r