SSIS 中的 For 循环容器将根据给定的次数重复 SQL Server Integration Services 任务,直到给定条件为 False。这与任何编程语言中的 For 循环相同。在本章中,我们将通过示例展示在 SSIS 中配置 For 循环容器的分步方法。
在开始使用 SSIS For 循环容器之前,我先在 SQL Server 中创建一个空表。
-- For Loop Container Example
CREATE TABLE [dbo].[SSISForLoopExample](
[Key] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[CounterNumber] [int] NULL,
[LoopNumber] [varchar](50) NULL,
[LastUpdated] [datetime] NULL,
)
GO
SSIS For 循环容器配置
在此示例中,我们将创建一个变量。接下来,我们将使用 For 循环将该变量加 1。然后将该值保存在我们上面创建的表中。为此,首先将 SSIS For 循环容器拖放到“控制流”区域。

双击它将打开 SSIS For 循环编辑器。您可以使用此编辑器进行配置。请参阅 C 语言编程中的 For 循环,以分步方式了解 For 循环的编程流程。即使您不知道 C 语言,它也有助于您理解循环概念。
- InitExpression:For 循环以初始化语句开始。因此,应首先完成计数器变量的初始化(例如,@counter = 1 或 @i = 1)。
- EvalExpression:计数器变量的值与条件进行比较。如果条件为 True,则执行 For 循环容器。否则,For 循环终止。
- AssignExpression:此表达式将在每次迭代结束时执行。它有助于根据我们的要求增加或减少计数器变量。
在 SSIS For 循环容器的“常规”部分下,请指定有效且更有意义的名称和描述。

我认为我忘了创建一个可以在 For 循环中使用的变量。因此,我将关闭 For 循环编辑器,然后右键单击设计将打开上下文菜单。请选择“变量”选项。

从下面的屏幕截图中可以看出,我们创建了一个名为 CounterNumber 的 Integer 类型变量,并将默认值设置为 0。

接下来,打开 For 循环编辑器,并分配适当的值。从下面的设置可以看出,For 循环将从 0 开始,执行直到达到 10,并且在每次迭代中,CounterNumber 的值增加 1。

单击“确定”关闭 SSIS For 循环容器。让我们将 Execute SQL Task 拖放到 For 循环容器内。我们将使用此 Execute SQL Task 向表中 INSERT 数据。

双击它将打开 Execute SQL Task 编辑器进行配置。我将连接类型选择为 ADO.NET Connection,它连接到 SQL Tutorial 数据库。接下来,我们将使用 Direct Input 作为 SQL 语句,因此请单击 … 按钮。

请在此处编写自定义 SQL 语句。从下面的屏幕截图中可以看出,我们正在编写一个 Insert statement 将数据插入 SSIS For Loop Example 表中。
-- For Loop Container Example
INSERT INTO [dbo].[SSISForLoopExample]
([CounterNumber]
,[LoopNumber]
,[LastUpdated])
VALUES
(@CounterNumber
,'Loop Number' + CAST(@CounterNumber AS VARCHAR(50))
,getdate())

验证其余 SSIS For 循环容器设置。

接下来,转到 For 循环容器参数设置,以分配我们在 SQL 命令中使用的参数。正如您所看到的,我们将用户变量(我们从 For 循环中获取的变量)分配给了 Parameter Name(这是我们在 SQL 语句中使用的名称)。

单击“确定”完成 Execute SQL Task 参数映射的配置。让我们运行 SSIS For 循环容器包。

让我打开 SQL Server Management Studio,并检查我们是否通过 For 循环容器将多个计数器值的记录插入了目标表中。

评论已关闭。