执行包任务

适用于:SQL Server Azure 数据工厂中的 SSIS Integration Runtime

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

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

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

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

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

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

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

Integration Services 包含执行工作流操作的任务,如执行可执行文件和批处理文件。 有关详细信息,请参阅 Execute Process Task

运行包

“执行包”任务可运行与父包一起包含在同一个项目中的子包。 您可以通过将 ReferenceType 属性设置为 “项目引用” ,然后设置 PackageNameFromProjectReference 属性,从项目中选择子包。

注意

“ReferenceType” 选项是只读的,如果包含包的项目尚未转换为项目部署模型,则该选项将设置为“外部引用” 。 部署 Integration Services (SSIS) 项目和包

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

执行包任务还可以运行数据库维护计划,该计划允许您管理同一 SSIS 解决方案中的 Integration Services 包和数据库维护计划。 数据库维护计划类似于 SSIS 包,但计划只能包含数据库维护任务,并始终存储在 msdb 数据库中。

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

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

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

默认情况下,“执行包”任务的 ExecuteOutOfProcess 属性被设置为 False,并且子包与父包运行在同一进程中。 如果将此属性设置为 True,则在单独的进程中运行子包。 这可能减慢子包的启动。 此外,如果将属性设置为 True,则不能在仅工具安装中调试包。 必须安装 Integration Services。 有关详细信息,请参阅 安装 Integration Services

扩展事务

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

传播日志记录详细信息

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

将值传递给子包

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

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

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

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

您可以使用以下方法将值传递到子包:

  • 包配置

    Integration Services 提供了一种配置类型(父包变量配置),用于将值从父包传递到子包。 配置在子包中生成,并使用父包中的变量。 将配置映射到子包中的某个变量,或映射到子包中某个对象的属性。 该变量还可以用于脚本任务或脚本组件所使用的脚本中。

  • 参数

    您可以配置执行包任务以将父包变量或参数(或项目参数)映射到子包参数。 项目必须使用项目部署模型,并且子包必须包含在父包所在的同一项目中。 有关详细信息,请参阅 Execute Package Task Editor

    注意

    如果子包参数不敏感且映射到敏感的父参数,则子包将无法运行。

    支持以下映射条件:

    将敏感的子包参数映射到敏感的父参数

    将敏感的子包参数映射到不敏感的父参数

    将不敏感的子包参数映射到不敏感的父参数

父包变量可以在执行包任务作用域内或父容器(例如包)中定义。 如果有多个同名的变量可用,则使用在执行包任务作用域内定义的变量,或使用作用域内与该任务最近的变量。

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

访问父包变量

子包可以通过使用脚本任务访问父包变量。 在“脚本任务编辑器”的“脚本”页上输入父包变量的名称时,不要在变量名称中包括“用户:” 。 否则,子包在运行父包时找不到该变量。

配置执行包任务

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

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

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

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

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

执行包任务编辑器

可以使用执行包任务编辑器来配置执行包任务。 执行包任务通过允许包将其他包作为工作流的组成部分运行来扩展 Integration Services 的企业功能。

您希望做什么?

打开执行包任务编辑器

  1. 在 Integration Services 中,打开包含执行包任务的 Visual Studio 项目。

  2. 在 SSIS 设计器中右键单击该任务,然后单击“编辑” 。

设置“常规”页上的选项

名称
为执行包任务提供唯一的名称。 此名称用作任务图标中的标签。

注意

任务名称在一个包内必须是唯一的。

说明
键入对执行包任务的说明。

设置“包”页上的选项

ReferenceType
为项目中的子包选择“项目引用” 。 为位于包外部的子包选择 “外部引用”

注意

“ReferenceType” 选项是只读的,如果包含包的项目尚未转换为项目部署模型,则该选项将设置为“外部引用” 。 部署 Integration Services (SSIS) 项目和包

密码
如果子包受密码保护,请提供子包的密码,或单击省略号按钮 (…),为子包创建新的密码。

ExecuteOutOfProcess
指定子包是在父包的进程中运行还是在单独的进程中运行。 默认情况下,“执行包”任务的 ExecuteOutOfProcess 属性被设置为 False,并且子包与父包运行在同一进程中。 如果将此属性设置为 true,则在单独的进程中运行子包。 这可能减慢子包的启动。 此外,如果将该属性设置为 true,则不能在仅工具安装中调试包;必须安装 Integration Services 产品。 有关详细信息,请参阅 安装 Integration Services

ReferenceType 动态选项

ReferenceType = 外部引用

位置
选择子包的位置。 此属性具有下表所列的选项。

说明
SQL Server 将位置设置为 SQL Server实例。
文件系统 将位置设置为文件系统。

Connection
选择子包的存储位置的类型。

PackageNameReadOnly
显示包的名称。

ReferenceType = 项目引用

PackageNameFromProjectReference
选择项目中包含的要成为子包的包。

位置动态选项

位置 = SQL Server

Connection
在列表中选择 OLE DB 连接管理器,或单击“<新建连接...>”以创建新的连接管理器。

相关主题:OLE DB 连接管理器

PackageName
键入子包的名称,或单击省略号 (…) 再定位到包。

位置 = 文件系统

Connection
在列表中选择一个文件连接管理器,或单击“<新建连接…>”以创建新的连接管理器。

相关主题:文件连接管理器

PackageNameReadOnly
显示包的名称。

设置“参数绑定”页上的选项

您可以将父包或项目中的值传递到子包。 项目必须使用项目部署模型,并且子包必须包含在父包所在的同一项目中。

有关将项目转换为项目部署模型的信息,请参阅部署 Integration Services (SSIS) 项目和包

子包参数
输入或选择子包参数的名称。

绑定参数或变量
选择包含要传递到子包的值的参数或变量。

添加
单击此选项可将参数或变量映射到子包参数。

删除
单击此选项可删除参数或变量与子包参数之间的映射。