gpt4 book ai didi

SSIS 平面文件连接器不工作

转载 作者:行者123 更新时间:2023-12-01 18:07:07 25 4
gpt4 key购买 nike

我在设置的每个平面文件连接器上都收到以下错误。平面文件连接器是在数据流任务中从 ADO.NET 设置的

Error at Data Flow Task [Flat File Destination 11 [1230]]: The number of input columns for Flat File Destination 11.Inputs[Flat File Destination Input] cannot be zero.

Error at Data Flow Task [SSIS.Pipeline]: "Flat File Destination 11" failed validation and returned validation status "VS_ISBROKEN".

Error at Data Flow Task [SSIS.Pipeline]: One or more component failed validation.

Error at Data Flow Task: There were errors during task validation.

我已经验证输入中有列,如下:

Flat file appears to be reading the columns correctly

我的data flow看起来像

enter image description here

元数据看起来合适

enter image description here

列映射

enter image description here

最佳答案

不要构建这样的数据流。它们将需要一段时间来验证(组件一个接一个地得到验证),并且您将获得有限数量的并行运行,因为它们都在同一数据流中。如果所有这些源都访问同一个数据库,您还可能会遇到锁定问题 - 请参阅 Too Many Sources in a Data Flow

如果您已确认所有平面文件目标都已映射其输入列,但您仍然收到此错误,则可能是 SSIS 数据流需要处理的源/目标映射太多/正确验证。您可能想尝试以下设计替代方案之一。

可管理性与性能

当您与如此多的目的地合作时,我建议您采用一种易于管理的方法。如果每个源 -> 目标映射的元数据都相同,则可以使用单个数据流执行此 ETL。

  1. 创建一个包含“SourceQuery”和“OutputFileName”列的数据库表
  2. 在表中为每个源/输出映射添加一行
  3. 在控制流中,选择表中的所有行
  4. 将结果集设置为完整结果集
  5. 将结果存储在对象变量 (objResultSet) 中
  6. 使用带有 ADO 枚举器的 Foreach 循环容器来读取每一行来自 objResultSet
  7. 将结果集中的列映射到包变量
  8. 使用以下命令将 SourceQuery 变量映射到 ADO.NET 源查询表达式
  9. 将 OutputFileName 变量映射到平面文件连接管理员的文件路径

如果您认为性能比可管理性更重要,并且您想为您的场景添加更多并行性,则可以考虑一些不同的事情。您采用的方法将取决于这些源查询的不同程度,以及您是否想要在数据库级别或 SSIS 数据流内进行计算。有多种方法可以做到这一点 - 这里有一些需要记住的事情。

  • 使用多个数据流任务可实现更多并行性,并且通常比在单个数据流中使用多个源的性能更好。唯一应该在数据流中使用多个源的情况是合并/联接行(并且联接无法在源查询中完成)
  • 如果您需要的所有数据都可以放入单个源查询中,请使用单个源组件和条件拆分转换将行发送到适当的目标
  • 如果您需要多个路径上的相同行,请使用多播转换
  • 您可以使用聚合转换来计算总和/计数,但将其推送到源查询可能会更快

关于SSIS 平面文件连接器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com