上一篇介紹了For循環容器的使用。本篇將介紹Foreach循環容器和序列容器的使用。
Foreach循環容器
Foreach循環容器定義包中的控制流。其循環的實現類似於編程語言中的Foreach循環結構。SQL Service Integration Services為Foreach容器提供了一下幾種枚舉類型
| 枚舉器 |
配置要求 |
| Foreach ADO |
指定 ADO 對象源變量和枚舉器模式。 |
| Foreach ADO.NET 架構行集 |
指定與數據庫的連接和要枚舉的架構。 |
| Foreach 文件 |
指定要枚舉的文件夾和文件、檢索到的文件的文件名格式,以及是否要遍歷子文件夾。 |
| Foreach 源變量 |
指定包含要枚舉的對象的變量。 |
| Foreach 項 |
定義 Foreach 項集合中的項,包括列和列數據類型。 |
| Foreach Nodelist |
指定 XML 文檔的源並配置 XPath 操作。 |
| Foreach SMO |
指定與數據庫的連接以及要枚舉的 SMO 對象。 |
下面看看具體如何使用該控件。假如我們在D:\SampleData含有如下文件:

現在我們用Foreach容器遍歷這些文件。
>創建一個名為”ForeachContainerDemo”的包。然后定義一個變量FileName,類型設置為String。
>按如下圖拖放控件

>右擊”遍歷貨幣”單擊編輯。按如下圖配置信息

其中 文件屬性中設置".txt"表示 讀取指定目錄下的所有txt文件。然改為a.txt表示讀取目錄下指定的文件。
>單擊變量映射選項,配置如下:

該配置表示,每次遍歷的文件名賦值給變量FileName.然后點擊確定。至此Foreach容器配置完畢。
>配置腳本任務和上一篇配置相同。只是做如下改動即可。修改 ReadOnlyVariables屬性值為“User::FileName”,並在Main函數中寫下如下代碼。
string fileName = Dts.Variables["FileName"].Value.ToString();
MessageBox.Show(fileName);
>執行包。將遍歷所以文本文件。結束后的效果如下:

序列容器
序列容器是一種十分簡單,但使用非常廣泛的容器,它可以對控制流的任務流組件進行結構化處理,把一些業務相關的任務組件,放到一個序列容器中,使整個包看起來更加整潔、美觀,就如同我們家里的書櫃、衣櫃似的,把不同種類的東西整理在里面,收藏起來,既美觀,又易於取用。它是將一個或多個控件作為一個工作單元來處理。例如:

在圖中名為“Prepare New DataBase”的序列容器包含三個執行Sql任務的控件。是將這三個控件組合成一個控件。只有三個控件都執行成功后,才能繼續執行下面的流程。序列容器的作用就是這些。不需要配置,也不要編寫代碼。只要將控件拖放到序列容器即可。有點類似我們C# 中用戶控件一樣。
到此本篇的內容就結束。主要是介紹For容器控件的使用。順便介紹一下序列容器控件。
