【问题标题】:SQl Server 2016 with R带有 R 的 SQL Server 2016
【发布时间】: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


【解决方案1】:

您是否连接过您的 SQL Server 数据库?

library("RODBC")
#library("XLConnect")

dbhandle <- odbcDriverConnect('driver={SQL Server};server=Name_Of_Server;database=Name_Of_DB;trusted_connection=true')
currTableSQL<-paste("SELECT * From Your_Table",sep="")
currTableDF<-sqlQuery(dbhandle,currTableSQL)

如果您想使用该库,请取消注释 XLConnect。我感觉很多时候,如果您使用 SQL Server,那么您也在使用 Excel。

或者。 . .

library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=YourServerName; Database=YourDBName;Uid=; Pwd=; trusted_connection=yes")
initdata <- sqlQuery(dbconnection,paste("select * from MyTable;"))
odbcClose(channel)

查看这些链接:

https://andersspur.wordpress.com/2013/11/26/connect-r-to-sql-server-2012-and-14/

最后,确保 SQL Server 应用了所有适当的权限。

【讨论】:

  • 这与 OP 的问题有什么关系? OP 在 R 中使用 R Services in SQL Server 2016/17 而不是 ODBC 连接。
  • 哎呀。我在这里没有看到任何关于 R Services 的信息。
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
相关资源
最近更新 更多