在本文中,我们将通过示例向您展示如何创建 SSIS 父子包配置。我们已经在之前的文章中解释了包配置列表。因此,请参阅包配置以了解相同内容。
我们在 D 驱动器中有一个 SSIS 文件系统任务文件夹,其中包含四个文本文件。为了演示此 SSIS 父子包配置,我们将把数据从文本文件加载到SQL Server表中。以下屏幕截图将向您展示 Employee1.txt 文件中的数据。

以下屏幕截图显示了 Employee2.txt 文件中的数据。

下面的屏幕截图显示了 Employee3.txt 文件中的数据。

以下屏幕截图显示了 Employee4.txt 文件中的数据。

SSIS 父子包配置示例
在此 SSIS 示例中,我们将首先配置父包,然后是子包。然后我们将创建一个父包变量(包配置)。我们的目标是从子包访问(包含数据)的父包变量。
在 SSIS 中配置父包
在此包中,我们将枚举这些 Employee 文本文件,并将文件名保存在字符串变量中。为此,首先将 Foreach Loop Container 拖放到 Control Flow 区域。

双击它将打开 Foreach Loop Editor 进行配置。在 Collections 选项卡中,请选择Foreach File Enumerator,因为我们要遍历文件系统中存在的文件。接下来,单击 Browse 按钮从文件系统中选择文件夹名称。

从下面的屏幕截图中,您可以看到我们正在 D 驱动器中选择 FILE SYSTEM TASK FOLDER。在 Files 部分,我们使用通配符 *.txt,因为我们要枚举文本文件。

我们的目标是将文件名存储在变量中。为此,请转到 Variable Mappings 部分,选择变量,并将其分配给索引 0。完成后,单击 OK 完成 Foreach Loop Container 的配置。

在 SSIS 中配置子包
将 Data Flow Task 从工具箱拖放到 Control Flow 区域,并将其重命名为 Load data from Text Files to SQL Server table。

双击它将打开 Data Flow 选项卡。接下来,从工具箱将Flat File Source和OLE DB Destination拖放到 Data Flow 区域。

双击 Flat File Source 将打开 Flat File Source Editor 来配置连接管理器设置。如果您已创建 Flat File Connection Manager,请选择它;否则,单击 New 按钮将打开 Flat File Connection Manager Editor。

从下面的屏幕截图中,您可以看到我们正在从 File System Task 文件夹中选择 Employee1 文本文件。

单击 OK 按钮关闭 Flat File Source Connection Manager Editor,然后单击 Flat File Source Editor 的 Columns 选项卡以验证列。在此选项卡中,我们也可以取消选中不需要的列。

双击OLE DB Destination将打开 OLE DB Destination Editor。选择OLE DB Connection Manager,然后选择数据库中存在的 [Parent Child Destination] 表以插入新记录。

单击 Mappings 选项卡以检查源列是否已正确映射到目标列。

子包将从文件系统中获取 Employe1 文本文件并将其保存在SQL Server表中。但是,我们打算将文件系统中存在的所有文本文件(Employee1、Employee2、Employee3 和 Employee4)加载到表中。为此,请从 Connection Managers 窗格中选择 Flat File Connection Manager,右键单击它,然后从上下文菜单中选择 Properties 选项。

单击 Expressions 属性将打开 Property Expressions Editor。在这里,我们需要配置 Connection String 设置。因此,从下拉框中选择 Connection Manager 属性,然后单击 … 按钮。

单击 … 按钮后,将打开 Expression Builder 来构建表达式。在这里,我们将 FileName 变量拖动为表达式。

现在,我们需要指定变量值 -> 位置、文件名、扩展名。
使用父包变量进行 SSIS 包配置
对于此 SSIS 父子包配置演示,右键单击 Control Flow 区域将打开上下文菜单。请从其中选择 Package Configurations.. 选项。

选择 Package Configurations.. 后,将打开一个名为 Package Configurations Organizer 的新窗口。请选中 Enable Package Configurations 以启用配置。接下来,单击 Add 按钮添加新配置。

单击 Add 按钮将打开一个向导。第一页是欢迎向导。请选中 Don’t show this page again 以避免出现此页面。

Select Configuration type:这是我们必须用来选择配置类型的页面。默认情况下,Integration Service会选择 XML 配置文件。在此示例中,我们正在解释 SSIS 父包变量配置。所以,我选择 Parent Package Variable 作为配置类型,并指定 Parent 变量名称。记住,变量名称应与父包变量名称相同。
有关其余配置,请参阅以下链接。

Select Target Property:您必须在此处指定目标值。在这里,我们将父包变量(FileName)分配给文件系统连接字符串变量(ChildFileName)的值。这意味着 ChildFileName 的默认值在运行时将被父包变量(FileName)替换。

我将 SSIS 配置名称重命名为 Parent Child Package Configuration。然后单击 Finish 按钮关闭向导。

现在您可以看到我们新创建的父包变量配置。

接下来,转到父包,并将Execute Package Task从工具箱拖放到 Foreach Container。

双击 Execute Package Task 进行配置。转到 Package 选项卡设置包位置和连接字符串。在此示例中,我们正在执行位于文件系统中的包。因此,请将 ReferenceType 更改为 External reference,并将文件系统选为 Package Source。
接下来,单击 New Connection 打开 File Connection Manager Editor 以在文件系统中选择文件。
提示:请参阅 Execute packages in File System 文章以了解从文件系统执行包的步骤。接下来,请参阅Execute Package Task Project Reference文章以调用同一项目内的包,以及Execute Packages in SQL Server以调用服务器中的包。

从下面的屏幕截图中,您可以看到我们正在从包列表中选择 Child Package。

单击 OK 选择文件。如果包受到密码保护(通常是),请提供适当的密码。

单击 OK 完成父包的配置。让我们运行 SSIS 父子包配置包。

从上面可以看到,我们的 Execute Package Task 是 Child Package。

让我们打开Management Studio并检查结果。

让我告诉您,如果我们删除父包变量配置会发生什么。

现在您可以看到任务失败了。
