SSIS 平面文件连接器不工作

标签 ssis

我在设置的每个平面文件连接器上都收到以下错误。平面文件连接器是在数据流任务中从 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/

相关文章:

c# - 从 ASP.NET 异步执行 SSIS 或 DTS 包

ssis - 如何在 SQL Server Management Studio 中运行本地 dtsx 包?

azure - SSIS 完成将数据加载到 Azure SQL DWH 后运行 Azure 自动化 Runbook

大型 SSIS ETL 项目中的版本控制

c# - 在脚本组件 (SSIS) 中使用现有连接

ssis - 通过 SSIS 连接到 SFTP

sql-server - 带有来自变量的动态 ConnectionString 的 SSIS 2012 Excel 源

database - 如何使用SSIS归档相关数据(在不同的表中)

ssis - 如何在派生列转换中替换双引号?

SSIS 平面文件 - 如何处理文件版本/生成