【发布时间】:2020-04-16 20:44:27
【问题描述】:
我在 SSIS 中有一个数据流,它使用 ODBC 源进行条件拆分。
源根据源中数据的可用性返回一组动态列 - 列数从 1 到 13。
在我的条件拆分中,我让它指向源并将数据提供给适合其列数的目标。
例子:
条件 1 -> 将第 1 列映射到第 1 列并忽略其他 12 列 条件 2 -> 将第 1 列和第 2 列映射到第 1 列和第 2 列并忽略其他 11 列
但是,如果源仅包含 1 列,则在第二个条件下失败,因为“此路径上存在一些映射错误”
我知道列数永远不会超过 13,这意味着我可以为第 1 - 13 列设置条件。
有什么方法可以忽略映射错误或强制 SSIS 在条件拆分中的最后一个可执行案例处停止?
我个人不想深入研究脚本组件,所以如果这可以通过条件拆分来完成,我会松一口气!
有什么想法吗?
【问题讨论】:
-
SSIS 期望您的源和目标有一个确定的定义。如果 wither 没有,则不能使用数据流。这是设计使然。在我看来,如果您没有定义数据定义,那就是真正的 问题。需要对数据采用“动态”方法通常意味着存在设计缺陷。
-
考虑到 ODBC 翻译没有任何指定列的查询,我必须面对一个真正的问题 - 返回将始终是动态的,取决于可用数据。您可能只是建议了一种动态创建数据定义的方法(这就是我本质上试图对条件拆分进行的操作)或将我指向一个资源。谢谢。
-
当数据流中的替代方案不存在时,我无法为您指出替代方案,@Channing。就像我说的,这是设计使然。您可能会使用脚本任务自己编写解决方案,这意味着没有条件拆分或其他转换,因为它们不存在于脚本任务中;它是控制流的一部分,而不是数据流。
标签: sql-server ssis conditional-statements qodbc