共用方式為


Foreach 迴圈容器

「Foreach 迴圈」容器定義封裝中重複的控制流程。迴圈實作與程式設計語言中 Foreach 迴圈的結構類似。在封裝中,迴圈是使用 Foreach 列舉值啟用。「Foreach 迴圈」容器會為指定列舉值的每個成員重複控制流程。

SQL ServerIntegration Services 提供下列列舉值類型:

  • Foreach ADO 列舉值,用來列舉資料表中的資料列。例如,您可以在 ADO 資料錄集中取得資料列。

  • 「Foreach ADO.NET 結構描述資料列集」列舉值,用來列舉有關資料來源的結構描述資訊。例如,您可以列舉並取得一份 AdventureWorksSQL Server 資料庫中資料表的清單。

  • 「Foreach 檔案」列舉值,用來列舉資料夾中的檔案。列舉值可往返子資料夾。例如,您可以讀取 Windows 資料夾及其子資料夾中所有副檔名為 *.log 的檔案。

  • Foreach From Variable 列舉值,用來列舉指定的變數所包含的可列舉物件。可列舉物件可以是陣列、ADO.NET DataTable、Integration Services 列舉值等等。例如,您可以列舉包含伺服器名稱之陣列的值。

  • 「Foreach 項目」列舉值,用來列舉集合項目。例如,您可以列舉「執行處理」工作使用之可執行檔與工作目錄的名稱。

  • Foreach Nodelist 列舉值,用來列舉 XML 路徑語言 (XPath) 運算式的結果集。例如,此運算式會列舉並取得一份古典時期所有作者的清單:/authors/author[@period='classical']。

  • Foreach SMO 列舉值,用來列舉 SQL Server Management Objects (SMO) 物件。例如,您可以列舉並取得一份 SQL Server 資料庫中檢視的清單。

下列圖表顯示擁有「檔案系統」工作的「Foreach 迴圈」容器。Foreach 迴圈會使用「Foreach 檔案」列舉值,而「檔案系統」工作則設定為複製檔案。如果列舉值指定的資料夾含有四個檔案,則迴圈會重複四次並複製四個檔案。

列舉資料夾的 Foreach 迴圈容器

您可以使用變數和屬性運算式的組合,以列舉值集合值更新封裝物件的屬性。首先,對應集合值與使用者定義的變數,接著在使用該變數的屬性上實作屬性運算式。例如,「Foreach 檔案」列舉值的集合值會對應到名稱為 MyFile 的變數,接著會在傳送郵件工作的 Subject 屬性的屬性運算式中使用此變數。當封裝執行時,便會在每次迴圈重複時以某個檔案名稱更新 Subject 屬性。如需詳細資訊,請參閱<在封裝中使用屬性運算式>。

對應至列舉值集合值的變數亦可在運算式和指令碼中使用。

「Foreach 迴圈」容器可包含多項工作和容器,但它只能使用一種列舉值。如果「Foreach 迴圈」容器包含多項工作,您可將列舉值集合值對應至每項工作的多個屬性。

您可以在「Foreach 迴圈」容器上設定交易屬性,用來定義封裝控制流程子集的交易。您可利用此方式於「Foreach 迴圈」層級管理交易,而非封裝層級。例如,如果「Foreach 迴圈」容器重複更新星狀結構描述中維度和事實資料表的控制流程,則可設定交易以確認所有事實資料表均成功更新,或不更新任何資料表。如需詳細資訊,請參閱<在封裝中合併交易>。

列舉值類型

列舉值可加以設定,而您必須根據列舉值提供不同的資訊。

下表摘要說明各列舉值類型所需的資訊。

列舉值

組態需求

Foreach ADO

指定 ADO 物件來源變數和列舉值模式。

Foreach ADO.NET 結構描述資料列集

指定資料庫的連接和要列舉的結構描述。

Foreach 檔案

指定資料夾和要列舉的檔案、所擷取檔案的檔名格式,以及是否往返子資料夾。

Foreach From Variable

指定包含要列舉物件的變數。

Foreach 項目

定義「Foreach 項目」集合中的項目,包括資料行和資料行資料類型。

Foreach Nodelist

指定 XML 文件的來源並設定 XPath 作業。

Foreach SMO

指定資料庫的連接和要列舉的 SMO 物件。

在 Foreach 迴圈容器中使用屬性運算式

封裝可以設定成同時執行多個可執行檔。當封裝包含實作屬性運算式的「Foreach 迴圈」容器時,請謹慎使用這項組態。

實作屬性運算式通常非常適合用來設定「Foreach 迴圈」列舉值所使用之連接管理員的 ConnectionString 屬性值。ConnectionString 的屬性運算式是由對應至列舉值之集合值的變數加以設定,並於迴圈的每個反覆運算中進行更新。

為了避免可執行檔平行執行時機不確定的負面影響,您應該將封裝設定為一次只執行一個可執行檔。例如,如果封裝可以同時執行多項工作,當執行 SQL 工作的兩個執行個體試圖同時進行寫入時,負責列舉資料夾中的檔案、擷取檔案名稱,然後使用執行 SQL 工作將檔案名稱插入資料表等步驟的「Foreach 迴圈」容器可能會引發寫入衝突。如需詳細資訊,請參閱<在封裝中使用屬性運算式>。

設定 Foreach 迴圈容器

您可以透過「SSIS 設計師」或以程式設計的方式來設定屬性。

如需有關可以在「SSIS 設計師」中設定之屬性的詳細資訊,請按下列其中一個主題:

如需有關如何在「SSIS 設計師」中設定這些屬性的詳細資訊,請按下列其中一個主題:

以程式設計的方式設定 Foreach 迴圈容器

如需有關以程式設計方式設定這些屬性的詳細資訊,請按一下以下主題:

Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的選定解決方案,請瀏覽 MSDN 或 TechNet 上的 Integration Services 頁面:

若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。