SSIS循环容器的使用与配置
立即解锁
发布时间: 2025-08-21 01:29:42 阅读量: 1 订阅数: 4 


精通SQL Server 2012 SSIS:专家级解决方案
# SSIS循环容器的使用与配置
## 1. For Loop Container
### 1.1 概述
For Loop Container 是在 SSIS 包控制流中创建循环的一种方法,它与编程语言中的 For 循环结构非常相似。在这个循环容器中,SSIS 可以选择初始化一个表达式,并重复其工作流,直到该表达式计算结果为 false。
### 1.2 应用场景
- 执行某操作 n 次。
- 在每次交互中等待一段时间(秒、分钟、小时等),直到特定操作发生,例如数据库中存储的标志发生变化。
- 等待到特定的日期和时间再执行操作。
### 1.3 重要属性
| 属性 | 描述 |
| ---- | ---- |
| InitExpression | 循环计数器的可选初始化表达式。 |
| EvalExpression | 计算一个表达式,必须为 true,否则容器将完成。用于测试循环是否应停止或继续。 |
| AssignExpression | 可选的迭代表达式,用于递增或递减循环计数器。 |
### 1.4 操作步骤
#### 1.4.1 准备工作
1. 打开 SQL Server Data Tools (SSDT) 并创建一个新的 SSIS 项目。
2. 为 SSIS 项目提供名称和位置,然后继续。
3. 选择默认创建的包并将其重命名为 P01_ForLoopContainer.dtsx。
#### 1.4.2 配置容器执行五次
1. 创建四个 SSIS 变量:
- uvLoopCounter1:存储第一个容器的每次迭代。
- uvLoopCounter2:存储第二个容器的每次迭代。
- uvLoopCounter3:存储第三个容器的每次迭代。
- uvLoopCounter3_End:存储第三个容器应执行的次数(n 次),默认值为 5。
2. 添加一个 For Loop Container 并使用必需和可选属性将其配置为执行五次:
- 从 SSIS 工具箱的“Containers”中拖放 For Loop Container 到控制流设计区域。
- 打开组件进行编辑。
- 在 InitExpression 属性中,将变量 uvLoopCounter1 初始化为 1。
- 在 EvalExpression 属性中,将评估表达式 uvLoopCounter1 设置为小于或等于 5。
- 在 AssignExpression 属性中,将变量 uvLoopCounter1 递增一个单位。
- 从 SSIS 工具箱的“Common”中拖放 Script Task 到 For Loop Container 内,以显示每次执行中 uvLoopCounter1 的进度。
- 打开 Script Task 进行编辑,并将 uvLoopCounter1 添加到 ReadOnlyVariables 属性。
- 点击“Edit Script…”并将以下代码添加到主函数:
```vb
MsgBox("LoopCounter = " & CStr(Dts.Variables(" uvLoopCounter1").Value), MsgBoxStyle.Information, "ForLoop Recipe")
```
3. 添加一个 For Loop Container 并使用必需属性将其配置为执行五次:
- 从 SSIS 工具箱的“Containers”中拖放 For Loop Container 到控制流设计区域。
- 打开组件进行编辑。
- 在 EvalExpression 属性中,将评估表达式 uvLoopCounter2 设置为小于或等于 5。
- 从 SSIS 工具箱的“Common”中拖放 Script Task 到 For Loop Container 内,以显示每次执行中 uvLoopCounter2 的进度。
- 打开 Script Task 进行编辑,并将 uvLoopCounter2 添加到 ReadOnlyVariables 属性。
- 点击“Edit Script…”并将以下代码添加到主函数:
```vb
MsgBox("LoopCounter = " & CStr(Dts.Variables("uvLoopCounter2").Value), MsgBoxStyle.Information, "ForLoop Recipe")
```
- 从 SSIS 工具箱的“Common”中拖放另一个 Script Task 到 For Loop Container 内,以在每次执行中递增变量 uvLoopCounter2。
- 打开 Script Task 进行编辑,并将 uvLoopCounter2 添加到 ReadWriteVariables 属性。
- 点击“Edit Script…”并将以下代码添加到主函数:
```vb
Dts.Variables("uvLoopCounter2").Value = CInt(Dts.Variables("uvLoopCounter2").Value) + 1
```
- 从绿色输出行链接两个 Script Tasks。
4. 添加一个 For Loop Container 并动态使用必需属性将其配置为执行五次:
- 从 SSIS 工具箱的“Containers”中拖放 For Loop Container 到控制流设计区域。
- 打开组件进行编辑。
- 在 EvalExpression 属性中,将评估表达式设置为 uvLoopCounter3 小于或等于 uvLoopCounter3_End 变量。
- 从 SSIS 工具箱的“Common”中拖放 Script Task 到 For Loop Container 内,以显示每次执行中 uvLoopCounter3 的进度。
- 打开 Script Task 进行编辑,并将 uvLoopCounter3 添加到 ReadOnlyVariables 属性。
- 点击“Edit Script…”并将以下代码添加到主函数:
```vb
MsgBox("LoopCounter = " & CStr(Dts.Variables(" uvLoopCounter3").Value), MsgBoxStyle.Information, "ForLoop Recipe")
```
- 从 SSIS 工具箱的“Common”中拖放另一个 Script Task 到 For Loop Container 内,以在每次执行中递增变量 uvLoopCounter3。
- 打开 Script Task 进行编辑,并将 uvLoopCounter3 添加到 ReadWriteVariables 属性。
- 点击“Edit Script…”并将以下代码添加到主函数:
```vb
Dts.Variables("uvLoopCounter3").Value = CInt(Dts.Variables("uvLoopCounter3").Value) + 1
If CInt(Dts.Variables("uvLoopCounter3").Value) = 3 Then
Dts.TaskResult = ScriptResults.Fai
```
0
0
复制全文
相关推荐










