【问题标题】:SSIS Error : oData VS_NEEDSNEWMETADATA Error When No Data ReturnedSSIS错误:没有数据返回时的oData VS_NEEDSNEWMETADATA错误
【发布时间】:2021-03-05 20:00:39
【问题描述】:

我进行了搜索,但没有找到与我遇到的问题相关的任何内容。如果我忽略了,我深表歉意。

我有一个场景,我从 oData 源提取数据并且一切正常。我有一个循环中的 oData 源,我循环遍历我们每个不同的公司并为该公司提取数据。我这样做是为了减少每个 oData 调用中返回的数据量。

只要有从 oData 调用返回的数据,一切正常。在随附的照片中,您可以看到正在拨打电话并正在返回数据。

但是,当使用不返回数据的参数/过滤器调用 oData 服务时,我得到以下信息,即引发 VS_NEEDSNEWMETADATA 错误。下图显示了当没有数据返回时我得到的结果。

所以问题不在于我的元数据由于对服务所做的更改(添加/删除字段)而无效。没有返回任何内容,因此没有元数据。现在这可能是我从(SAP S4)中提取 oData 的系统的问题,并且当没有数据时系统会显示 oData 调用??

无论哪种方式,都试图找出一种在 SSIS 中处理此问题的方法。我试图设置 validate external metadata = false 但包仍然失败。我也可以通过在脚本中排除这些公司来解决这个问题,但是一旦数据确实存在,我就必须记住更新脚本并重新部署。

想法建议?

【问题讨论】:

  • 还有一个延迟验证设置(因此它不会在加载时或运行之前尝试验证)。
  • 有没有办法让您在没有数据时检查 oData 调用返回的内容?如下所示,一种可能的解决方法是进行“数据是否存在”调用,该调用返回布尔值是或否,即类似于 sql server IF EXISTS。根据此结果,您可以进行实际的 oData 调用。另外:blogs.sap.com/2018/09/09/…

标签: ssis odata


【解决方案1】:

除了您的元数据由于形状不同而在无数据情况下发生变化 - 至少从 SSIS 引擎的角度来看,您已经一针见血了。

您基本上需要双重调用 OData 源。第一次调用将简单地识别返回的数据。如果该评估为真,那么数据流才会开始运行。

您如何评估您的 OData 是否会返回数据?您可能正在查看脚本任务和 C#/VB.NET,并希望 SAP 数据返回在此调用和下一次调用之间不会发生变化。

如果是这种情况,那么您需要为数据流定义 OnError 事件处理程序,将系统范围变量 Propagate 标记为 False,甚至可能强制返回成功状态以使循环继续。

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多