【问题标题】:SSIS Package using C# code gives error "VS_NEEDSNEWMETADATA"使用 C# 代码的 SSIS 包给出错误“VS_NEEDSNEWMETADATA”
【发布时间】:2014-06-19 17:53:53
【问题描述】:

我已经阅读了关于 SO 的类似问题的大部分答案,但是没有一个解决了这个问题。 我们使用 C# 代码创建了一个包,它将数据从源表转移到目标。

源表:RowKey、Col1、Col2

目标表:RowKey、Col1、Col2、RowID、RunID(RowID 是目标表中的标识列,RunID 是使用变量设置值的派生列)

当我们直接执行这个包时,它运行良好,但是,我们从主包运行这些包。当我们尝试从 MasterPackage 运行包 (ChildPackage) 时,我们收到一个错误: [SSIS.Pipeline] 错误:“Oledb Destination”验证失败并返回验证状态“VS_NEEDSNEWMETADATA”。

我们尝试将 ChildPackage 的 DelayValidation 设置为 true,甚至尝试将 ChildPackage 的数据流任务的源组件和目标组件的“ValidateExternalMetadata”值设置为“False”。

源和目标中的列名没有大小写差异,当我们直接运行 ChildPackage 时它运行良好。 Master 包执行的唯一任务是生成并设置一个变量,该变量用作子包的 RunID 值。

【问题讨论】:

  • 如果您删除主包中生成和设置 RunID 的步骤,它是否仍会出现元数据错误?
  • 如果我们单独运行子包,对 RunID 进行硬编码,它可以正常工作。这可能是正在使用的连接问题吗?由于主包使用在 SSIS 项目中定义的连接管理器,而子包是使用 .net 代码创建的,因此使用变量来连接到 DB。

标签: ssis


【解决方案1】:

这适用于面临类似问题的任何人,在其中一项数据转换任务中,我们添加了派生列,而派生列之一在目标表中不存在。一旦我们删除了这个额外的派生列,一切正常。

【讨论】:

  • 你是救生员!
猜你喜欢
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多