在 SSIS 中使用 Foreach ADO 枚举器






4.69/5 (11投票s)
2006年6月4日
2分钟阅读

348770
SSIS 内置了循环功能。在本文中,我想演示如何使用 SSIS 的 Foreach ADO 枚举器循环遍历 SQL Server 名称列表,并收集关于它们的一些基本数据(例如,名称、语言、版本等)。
引言
本例的目的是收集关于 SQL Server 列表的一些基本数据,例如服务器名称、服务名称、语言等。服务器列表存储在 SQL Server 表 ("Server
") 中;收集到的数据应该存储在表 "ServerSetup
" 中

我们首先在 Visual Studio 2006 中创建一个 SSIS 包。需要检查的服务器列表通过使用“执行 SQL 任务”从我们的 SQL Server 数据库中读取。我们需要将 SQL 查询的结果集写入一个变量。循环稍后将遍历此变量中所有表的所有行。 指定“完整结果集”很重要;如果您不设置此选项,您将无法将结果集存储到变量中。

在您输入 SQL 语句并设置了“结果集”选项后,您必须切换到“结果集”窗格并指定要存储结果集的变量的名称。变量的类型必须为“对象”

下一步是创建我们的 Foreach ADO 循环。 如下图所示,您必须指定我们写入“执行 SQL 任务”结果集的变量:

此外,我们还必须指定第二个变量(类型为 String!),循环将把结果集中每一行的内容写入该变量。变量的内容将从一次迭代到另一次迭代发生变化

此图显示了您为运行此示例必须定义的变量的摘要

在循环内部,我们使用数据流任务从我们的各种 SQL Server 获取基本数据。到目前为止,我们的控制流应该看起来像这样

下一步是创建我们的源连接。首先,我们创建一个指向我们要从中收集数据的任何 SQL Server 的静态连接

其次,我们使用连接的属性来指定一个表达式,通过该表达式,连接的连接字符串将被更改为 Foreach ADO 循环更改的变量中的连接字符串

最后但并非最不重要的一点是,我们定义了目标连接并映射了字段

最后,我们包的数据流应该看起来像这样

试试吧!您将看到 Foreach ADO 循环会自动更改变量 ConnectionString 的内容,并且您会在目标表中接收到关于所有 SQL Server 的基本数据。
历史
- 2006年6月4日:初始帖子