SSIS ForEach 循环 SMO 枚举器

在本文中,我们将向您展示配置 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 数据库中存在的表。

剩余迭代次数为

SSIS ForEach Loop SMO Enumerator 2

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

SSIS ForEach Loop SMO Enumerator 3

单击 New Connection.. 按钮后,将打开 SMO Connection Manager Editor 进行配置。对于此 SSIS ForEach 循环 SMO 枚举器示例,我们选择 suresh 作为服务器实例并使用 Windows 身份验证。

提示:请参阅 SMO Connection Manager 文章以了解其属性。

SSIS ForEach Loop SMO Enumerator 4

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

SSIS ForEach Loop SMO Enumerator 5

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

SSIS ForEach Loop SMO Enumerator 6

单击 后,将打开 Add Variable 窗口以创建新变量。在此示例中,我们需要变量来存储表名。因此,我们创建了一个字符串变量并将其命名为 Table_Name。单击 OK 完成字符串变量的创建。

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

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

SSIS ForEach Loop SMO Enumerator 9

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

SSIS ForEach Loop SMO Enumerator 10

接下来,我们将编写以下 SQL 查询,将表名插入到 SMO_Enumerator 表中。

INSERT INTO SMO_Enumerator ([Table_Name])
VALUES (?)

这里,问号将被参数替换。

SSIS ForEach Loop SMO Enumerator 11

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

SSIS ForEach Loop SMO Enumerator 12

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

SSIS ForEach Loop SMO Enumerator 13

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