容器是 SQL Server Integration Services 中为包提供结构和为任务提供服务的对象。 它们支持包中的重复控制流,并且将任务和容器分组为有意义的工作单元。 除了任务,容器还可以包含其他容器。
包将容器用于下列用途:
- 重复执行集合中每个元素的任务,这些元素包括文件夹中的文件、架构或 SQL Server 管理对象 (SMO) 对象等。 例如,包可以运行驻留在多个文件中的 Transact-SQL 语句。 
- 重复任务,直到指定的表达式的计算结果为 - false。 例如,包可以一周七次,每天一次地发送一封不同的电子邮件。
- 将必须作为一个单元成功或失败的任务和容器分组到一起。 例如,包可以将在数据库表中删除和添加行的任务分组到一起,然后当其中一个任务失败时提交或回滚所有任务。 
容器类型
Integration Services 提供四种用于生成包的容器。 下表列出了容器类型。
| 集装箱 | DESCRIPTION | 
|---|---|
| Foreach 循环容器 | 通过使用枚举器重复运行控制流。 | 
| For 循环容器 | 通过测试某个条件重复运行控制流。 | 
| 序列容器 | 将任务和容器分组到那些作为包控制流子集的控制流中。 | 
| 任务宿主容器 | 为单个任务提供服务。 | 
包和事件处理程序也是容器类型。 有关详细信息,请参阅 Integration Services (SSIS) 包和 Integration Services (SSIS) 事件处理程序。
容器属性摘要
通常,所有容量类型都有一组属性。 如果使用 Integration Services 提供的图形工具创建包,“属性”窗口将列出 Foreach 循环容器、For 循环容器和序列容器的以下属性。 配置任务宿主容器属性是配置任务宿主容器所封装的任务的一部分。 配置任务时需要设置任务宿主属性。
| 资产 | DESCRIPTION | 
|---|---|
| DelayValidation | 指示是否将容器的验证推迟到运行时进行的布尔值。 此属性的默认值为 False.有关详细信息,请参阅 DelayValidation。 | 
| Description | 容器说明。 该属性包含一个字符串,但可以为空。 有关详细信息,请参阅 Description。 | 
| Disable | 指示容器是否运行的布尔值。 此属性的默认值为 False.有关详细信息,请参阅 Disable。 | 
| DisableEventHandlers | 指示与容器关联的事件处理程序是否运行的布尔值。 此属性的默认值为 False. | 
| FailPackageOnFailure | 指定如果容器中出现错误包是否失败的布尔值。 此属性的默认值为 False.有关详细信息,请参阅 FailPackageOnFailure。 | 
| FailParentOnFailure | 指定如果容器中出现错误父容器是否失败的布尔值。 此属性的默认值为 False.有关详细信息,请参阅 FailParentOnFailure。 | 
| ForcedExecutionValue | 如果将 ForceExecutionValue设置为True,则该对象包含用于容器的可选执行值。 此属性的默认值为 0。有关详细信息,请参阅 ForcedExecutionValue。 | 
| ForcedExecutionValueType | 的 ForcedExecutionValue数据类型。 此属性的默认值为Int32。 | 
| ForceExecutionResult | 指定运行包或容器的强制结果的值。 其值为: None、Success、Failure和Completion。 此属性的默认值为None.有关详细信息,请参阅 ForceExecutionResult。 | 
| ForceExecutionValue | 指定容器的可选执行值是否应强制包含特定值的布尔值。 此属性的默认值为 False。有关详细信息,请参阅 ForceExecutionValue。 | 
| ID | 容器 GUID,该属性是在创建包时分配的。 此属性为只读。 ID。 | 
| IsolationLevel | 容器事务的隔离级别。 值为 Unspecified、、Chaos、ReadUncommitted、ReadCommittedRepeatableRead、Serializable和Snapshot。 此属性的默认值为Serializable。 有关详细信息,请参阅 IsolationLevel。 | 
| LocaleID | Microsoft Win32 区域设置。 此属性的默认值为本地计算机上操作系统的区域设置。 有关详细信息,请参阅 LocaleID。 | 
| LoggingMode | 指定容器日志记录行为的值。 具体的值为 Disabled、Enabled和UseParentSetting。 此属性的默认值为UseParentSetting。 有关详细信息,请参阅 DTSLoggingMode。 | 
| MaximumErrorCount | 容器停止运行前可以出现的最大错误数。 此属性的默认值为 1。 有关详细信息,请参阅 MaximumErrorCount。 | 
| Name | 容器的名称。 有关详细信息,请参阅 Name。 | 
| TransactionOption | 容器的事务参与情况。 值为 NotSupported,SupportedRequired。 此属性的默认值为Supported。 有关详细信息,请参阅 DTSTransactionOption。 | 
在以编程方式配置 Foreach 循环容器、For 循环容器、序列容器和任务宿主容器时,若要了解可用于这些容器的所有属性,请参阅以下 Integration Services API 主题:
- T:Microsoft.SqlServer.Dts.Runtime.ForEachLoop 
- T:Microsoft.SqlServer.Dts.Runtime.ForLoop 
- T:Microsoft.SqlServer.Dts.Runtime.Sequence 
- T:Microsoft.SqlServer.Dts.Runtime.TaskHost 
扩展容器功能的对象
容器包括由可执行文件和优先约束组成的控制流,并且可能使用事件处理程序和变量。 任务宿主容器是个例外:因为任务宿主容器封装单个任务,所以它不使用优先约束。
可执行文件
可执行文件指容器级别的任务和该容器内的任意容器。 可执行文件可以是 Integration Services 提供的任务和容器之一,也可以是自定义任务。 有关详细信息,请参阅 集成服务任务 和 集成服务容器。
优先约束
优先约束将同一父容器中的容器和任务链接到已排序的控制流中。 有关详细信息,请参阅 优先约束。
事件处理程序
容器级别的事件处理程序对由容器或容器包括的对象所引发的事件做出响应。 有关详细信息,请参阅 Integration Services (SSIS) 事件处理程序。
变量
在容器中使用的变量包括由 Integration Services 提供的容器级别系统变量和容器使用的用户定义变量。 有关详细信息,请参阅 Integration Services (SSIS) 变量。
断点
对容器设置断点且中断条件为 “当容器收到 OnVariableValueChanged 事件时断开”时,请在容器范围内定义变量。