4

我在 ssis 的一个项目中遇到了这个问题。我不得不将原始项目分成不同的包,因为它太大了,有时它可能会引发一些内存问题。因此,为了链接不同的包,我使用“执行包任务”来相互引用。如果我直接从 SSIS 执行包,它可以完美运行,没有问题。但是,如果我使用调度程序来编程执行时间,我会收到以下错误消息:

错误:2015-09-22 14:54:37.98 代码:0xC00220E6 来源:执行包任务描述:没有项目可参考。结束错误错误:2015-09-22 14:54:37.99 代码:0xC0024107 来源:执行包任务描述:任务验证期间出现错误。结束错误 DTExec:包执行返回 DTSER_FAILURE (1)。

我想知道该项目及其执行会发生什么。

问候

4

1 回答 1

5

我不确定您使用的是什么调度程序,或者它是如何配置的,但您可以通过使用 DTExec 模拟调度程序来调试您的方式。听起来你已经越过了你的SetupExecution Method(这些定义见下文)。

这是摘要。

  1. 选项 1:对于设置,使用Project References,对于执行方法,使用Project/Package.
  2. 选项 2:对于安装程序,对于每个子包,使用External References和对于执行方法,使用File.

(听起来您正在使用 and 的组合Project ReferencesFile这反过来会There is no project to reference从子包中发送错误。)

选项1

设置

在 SSDT 中打开您的父包,然后双击一个子包。它应该如下所示: 项目参考

执行方法

此设置意味着您需要通过 DTExec 通过 Project/Package 方法执行包。所以构建你的项目——这会生成一个 ispac 文件。并通过 dtexec 执行,它看起来像:

dtexec /Proj Path\To\MyProject.ispac /Pack Path\To\The\ParentPackage.dtsx

注意:如果您在参数中指定dtsproj文件而不是ispac文件/Proj,您将收到File contains corrupted data错误消息!

选项 2

设置

在 SSDT 中打开您的父包,然后双击一个子包。将其更改为如下所示: 外部参考

这是通过以下方式完成的:
1. 将引用类型更改为外部引用
2. 将位置更改为文件系统(SQL Server 是另一个选项)
3. 选择<New connection...>为要运行的子包创建新文件连接(或 SQL 服务器连接)

执行方法

此设置意味着您现在可以使用 File 方法,这可能是您尝试执行包的方式。

dtexec /f Path\To\My\ParentPackage.dtsx

于 2015-10-05T21:19:28.667 回答