【发布时间】: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