在本文中,我们将向您展示配置 SSIS ForEach 循环 SMO 枚举器所需的步骤。
SSIS ForEach 循环 SMO 枚举器:SMO 是 SQL Server Management Object 的缩写,用于枚举 SQL Server Management Objects。例如,SSIS ForEach 循环 SMO 枚举器可以枚举数据库中存在的表、视图等列表。
SSIS ForEach 循环 SMO 枚举器
在此示例中,我们将枚举 AdventureWorksDW 2014 数据库中存在的表,并将表名复制到另一个数据库表中。
为此,首先将 Foreach Loop Container 拖放到 SSIS 控制流区域。

双击它将打开 Foreach Loop Editor 进行配置。在“常规”选项卡中,请指定有效且更有意义的名称和描述。从下方可以看到,我们将默认名称更改为 SSIS ForEach Loop SMO Enumerator。

接下来,转到“集合”选项卡以选择枚举器并配置消息。在深入研究其余属性之前,我们必须了解枚举器属性。在这里,我们选择 Foreach SMO Enumerator,因为我们想遍历 AdventureWorksDW 2014 数据库中存在的表。
剩余迭代次数为

接下来,我们必须配置连接管理器。因此,单击下拉箭头按钮并选择 New Connection.. 按钮来创建一个新的连接,或者选择现有的连接管理器(如果有)。

单击 New Connection.. 按钮后,将打开 SMO Connection Manager Editor 进行配置。对于此 SSIS ForEach 循环 SMO 枚举器示例,我们选择 suresh 作为服务器实例并使用 Windows 身份验证。
提示:请参阅 SMO Connection Manager 文章以了解其属性。

单击 Browse 按钮以选择我们数据库中存在的表。从下面的屏幕截图中,您可以看到我们正在选择 AdventureWorksDW2014 数据库的表名。

接下来,我们需要将文件名存储在变量中以供 Execute SQL Task 使用。为此,请转到 Variable Mappings 部分,选择用户变量(如果有)或创建一个新变量。

单击

现在选择新创建的变量,并将其分配给索引 0。完成后,单击 OK 完成 Foreach Loop Container 的配置。

接下来,从工具箱将 Execute SQL Task 拖放到 Foreach loop container 中。此任务将帮助我们将新值插入到空的表中。

双击它将打开 Execute SQL Task Editor 窗口。从下面的屏幕截图中,您可以看到我们选择 OLE DB 作为连接类型,并选择了指向数据库的现有连接。

接下来,我们将编写以下 SQL 查询,将表名插入到 SMO_Enumerator 表中。
INSERT INTO SMO_Enumerator ([Table_Name]) VALUES (?)
这里,问号将被参数替换。

接下来,转到参数映射,然后选择我们在 Foreach Loop 容器中分配的参数。这意味着 Foreach loop container 将遍历 AdventureWorksDW 数据库中的表,并将表名存储在 User::Table_name 变量中。然后,我们将这些表名传递到 Execute SQL task 中。

单击 OK 完成 SSIS ForEach 循环 SMO 枚举器包的配置。让我们运行包。

让我们打开 SQL Server Management Studio,检查是否使用 SSIS ForEach 循环 SMO 枚举器将表名插入到目标表中。
