执行包任务

执行包任务通过允许包将其他包作为工作流的组成部分运行来扩展 Integration Services 的企业功能。

可以将执行包任务用于下列用途:

  • 细分复杂的包工作流。此任务允许您将工作流细分为多个更易于读取、测试和维护的包。例如,如果将数据加载到星型架构中,则可以生成一个单独的包来填充每个维度和事实数据表。

  • 重用部分包。其他包可以重用部分包工作流。例如,您可以生成可从不同的包中进行调用的数据提取模块。调用提取模块的每个包都可以执行不同的数据清理、筛选或聚合操作。

  • 对工作单元进行分组。可以将工作单元封装到单独的包中,并作为事务组件联接到父包的工作流中。例如,父包运行辅助包,并根据辅助包的成功或失败来提交事务或回滚事务。

  • 控制包的安全性。包作者需要访问的仅是多包解决方案的一部分。通过将某个包细分为多个包,可以提供更高级别的安全性,因为可以只授予作者对相关包的访问权。

运行其他包的包通常称为父包,由父工作流运行的包称为子包。

执行包任务可以运行存储在 SQL Servermsdb 数据库中的包和存储在文件系统中的包。此任务使用 OLE DB 连接管理器连接到 SQL Server,使用文件连接管理器访问文件系统。有关详细信息,请参阅OLE DB 连接管理器平面文件连接管理器

执行包任务还可以运行数据库维护计划,该计划允许您管理同一 Integration Services 解决方案中的 SSIS 包和数据库维护计划。数据库维护计划类似于 SSIS 包,但计划只能包含数据库维护任务,并始终存储在 msdb 中。有关详细信息,请参阅维护数据库(数据库引擎)维护任务

如果选择存储在文件系统中的包,则必须提供包的名称和位置。包可以驻留在文件系统中的任何位置;而不必与父包位于相同的文件夹中。

子包可以在父包的进程中运行,也可以在其自身的进程中运行。子包在其自身的进程中运行需要更多内存,但可以提供更大的灵活性。例如,如果子进程失败,父进程可以继续运行。

而有时您则希望父包和子包作为一个单元一起失败,或者您可能不希望引发其他进程的额外开销。例如,如果子进程失败,而包的父进程中的后续处理取决于子进程的成功,则子包应当在父包的进程中运行。

默认情况下,“执行包”任务的 ExecuteOutOfProcess 属性被设置为 False,并且子包与父包运行在同一进程中。如果将此属性设置为 True,则只能调试包含有限功能的包。若要调试您的 SQL Server 版本所支持的所有包,必须安装 Integration Services。

扩展事务

父包使用的事务可扩展到子包;因此,两个包都执行的工作可以提交或回滚。例如,取决于子包执行的数据库插入,父包执行的数据库插入可以提交或回滚,反之亦然。有关详细信息,请参阅继承的事务

传播日志记录详细信息

执行包任务运行的子包可能配置为使用日志记录,也可能没有配置为使用日志记录,但子包将始终将日志详细信息转发给父包。如果执行包任务配置为使用日志记录,则任务将记录来自子包的日志详细信息。有关详细信息,请参阅在包中实现日志记录

将值传递给子包

子包经常使用调用它的其他包(通常是其父包)传递给它的值。使用来自父包的值在如下情况下非常有用:

  • 较大工作流的各部分分配给了不同的包。例如,某个包每夜下载数据、汇总数据、将汇总数据值赋给变量,然后将这些值传递给其他包以进行其他数据处理。

  • 父包动态协调子包中的任务。例如,父包确定当月的天数,将该数值赋给某一变量,然后子包即会将任务执行相应的次数。

  • 子包需要访问父包动态派生的数据。例如,父包从表中提取数据并将行集加载到变量中,而子包执行对数据的其他操作。

您可以利用包配置使父包中的值可供子包使用。Integration Services 提供了一种配置类型(父包变量配置),用于将值从父包传递到子包。配置在子包中生成,并使用父包中的变量。

父包变量可以在执行包任务作用域内或父容器(例如包)中定义。如果有多个同名的变量可用,则使用在执行包任务作用域内定义的变量,或使用作用域内与该任务最近的变量。然后将配置映射到子包中的某个变量,或映射到子包中某个对象的属性。该变量还可以用于 ActiveX 脚本任务、脚本任务或脚本组件所使用的脚本中。

有关详细信息,请参阅如何在子包中使用父变量的值

其他相关任务

Integration Services 包含执行工作流操作的任务,如执行 SQL Server 2000 包、可执行文件和批处理文件。

有关这些任务的详细信息,请单击下列主题之一:

配置执行包任务

可以通过 SSIS 设计器或以编程方式来设置属性。

有关可以在 SSIS 设计器中设置的属性的详细信息,请单击下列主题之一:

有关在 SSIS 设计器中如何设置这些属性的详细信息,请单击以下主题:

以编程方式配置执行包任务

有关以编程方式设置这些属性的详细信息,请单击以下主题:

Integration Services 图标(小) 使 Integration Services 保持最新

若要从 Microsoft 获得最新的下载内容、文章、示例和视频,以及从社区获得所选解决方案,请访问 MSDN 或 TechNet 上的 Integration Services 页:

若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。