ForEachDirectory 範例
更新: 2005 年 12 月 5 日
這個程式碼範例示範如何建立自訂列舉值和自訂使用者介面,來使用 .NET Framework 和 Managed 程式碼設定列舉值的屬性。IA64 不支援此範例。
執行範例
如果您已經知道如何找出、建置和安裝程式碼範例,可以直接跳至<測試範例>一節,閱讀有關如何設定與執行程式碼範例的內容。
必要條件
ForEachDirectory 範例需要安裝下列元件。
- .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免費取得 .NET Framework SDK。請參閱《線上叢書》主題<安裝 .NET Framework SDK>。
- Microsoft SQL Server 2005 Integration Services
重要事項: |
---|
範例只供教育目的之用。它們不能用於實際執行環境,而且從來沒有在實際執行環境中測試過。Microsoft 不提供對這些範例的技術支援。 |
位置
如果程式碼範例安裝於預設位置,則範例位於下列目錄中:
C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\\Programming Samples\Control Flow\ForEachDirectory Sample
程式碼範例的 C# 方案位於 CS 目錄中,而 Visual Basic 方案位於 VB 目錄中。
如需有關安裝範例所需執行之兩個步驟程序的詳細資訊,請參閱<安裝範例>。若要取得最新版的範例,包括自 SQL Server 2005 原始發行版本以來所發佈的新範例,請參閱<SQL Server 2005 範例與範例資料庫 (2006 年 4 月)>(英文)。
建立範例
如果您尚未產生強式名稱金鑰檔,請使用下列程序來產生此金鑰檔。
若要產生強式名稱金鑰檔
若要開啟 Microsoft Visual Studio 2005 命令提示字元,請按一下 [開始],依序指向 [所有程式]、[Microsoft Visual Studio 2005]、[Visual Studio 工具],然後按一下 [Visual Studio 2005 命令提示字元]。
- 或 -
若要開啟 Microsoft .NET Framework 命令提示字元,請按一下 [開始],依序指向 [所有程式] 和 [Microsoft .NET Framework SDK 2.0],然後按一下 [SDK 命令提示字元]。
在命令提示字元中,使用變更目錄 (CD) 命令,將 [命令提示字元] 視窗的目前資料夾變更為 Samples 資料夾。您在此資料夾建立的金鑰檔將供所有 Microsoft SQL Server 2005 程式碼範例使用。
附註: 若要判斷範例所在的資料夾,按一下 [開始],依序指向 [所有程式]、[Microsoft SQL Server 2005] 和 [文件集和教學課程],然後按一下 [範例目錄]。如果是使用預設安裝位置,則範例位於 <system_drive>:\Program Files\Microsoft SQL Server\90\Samples。 在命令提示字元中,執行下列其中一個命令來產生金鑰檔:
sn -k SampleKey.snk
重要事項: 如需有關強式名稱金鑰組的詳細資訊,請參閱 MSDN 中 .NET Development Center 中的<Security Briefs: Strong Names and Security in the .NET Framework>。 在後續步驟中,您需要金鑰檔的公開金鑰 Token。若要取得公開金鑰 Token,請在命令提示字元中執行下列命令,先從金鑰檔擷取公開金鑰:
sn -p SampleKey.snk SampleKeyPublic.snk
在命令提示字元中執行下列命令來顯示公開金鑰 Token:
sn -t SampleKeyPublic.snk
將公開金鑰 Token 複製到剪貼簿,或儲存起來供以後使用。
若要建立範例
開啟 [Microsoft Visual Studio 2005]。
從 [檔案] | [開啟] 功能表上,按一下 [專案],然後在所要的 Samples 目錄 (C# 語言為 CS 目錄,Visual Basic 語言則為 VB 目錄) 中開啟 ForEachDirectory.sln。
在 [方案總管] 中,選取 ForEachDirectory.cs 或 ForEachDirectory.vb 程式碼。
在此程式碼中,尋找 DtsTask 屬性。在該程式碼行中,取代 IncrementTask.cs 中 UITypeName 屬性內容之公開金鑰 Token 的現有值。在 "PublicKeyToken =" 之後的英數字元值應該取代成上一個步驟的 sn -t 命令所顯示的值。
按一下功能表上的 [建立] / [建立 ForEachDirectory],來建立專案的 DLL。
將 DLL 安裝到 ForEachEnumerator 資料夾和全域組件快取 (GAC) 中
Visual Basic 和 C# 中都提供了此範例。為了區別每版範例的組件,輸出組件的名稱附加了 CS 或 VB。成功建立元件之後,該元件必須複製到 ForEachEnumerators 資料夾,然後加入至全域組件快取 (GAC) 中,才能在 Business Intelligence Development Studio 使用它。
若要將元件安裝到 ForEachEnumerators 資料夾
將組件 (ForeachDirectoryCS.dll 或 ForeachDirectoryVB.dll) 複製到位於 %system%\Program Files\Microsoft SQL Server\90\DTS\ForEachEnumerators 的資料夾。
開啟位於 %system%\assembly 的全域組件快取 (GAC) 目錄。對於大部分電腦.這將是 C:\Windows\assembly。
在第一個視窗中選取組件,然後將其拖放至包含 assembly 資料夾的視窗中。
若要透過拖放組件將元件安裝於全域組件快取 (GAC)
將組件 (ForeachDirectoryCS.dll 或 ForeachDirectoryVB.dll) 複製到位於 %system%\Program Files\Microsoft SQL Server\90\DTS\ForEachEnumerators 的資料夾。
開啟位於 %system%\assembly 的全域組件快取 (GAC) 目錄。對於大部分電腦.這將是 C:\Windows\assembly。
在第一個視窗中選取組件,然後將其拖放至包含 assembly 資料夾的視窗中。
若要使用 gacutil.exe 將元件安裝於全域組件快取 (GAC)
開啟 [命令提示字元] 視窗。
輸入下列命令以將 C# 版元件和使用者介面安裝於全域組件快取:
gacutil.exe -iF "c:\Program Files\Microsoft Sql Server\90\DTS\ ForEachEnumerators\ForEachDirectoryCS.dll"
輸入下列命令以將 Visual Basic 版元件和使用者介面安裝於全域組件快取:****
gacutil.exe -iF "c:\Program Files\Microsoft Sql Server\90\DTS\ForeachEnumerators\ForeachDirectoryVB.dll"
注意 為了簡化,此範例的使用者介面作為工作程式碼放在同一專案中;因此,所需要做的只是將 DLL 複製至組件目錄。如果您決定在不同的專案中對使用者介面進行編碼,則除了包含該程式碼的 DLL 之外,您還需要將包含使用者介面的 DLL 加入全域組件快取 (GAC) 中。但是,只有程式碼需要編譯至特定的目錄中。
在完成這些步驟之後,For Each 迴圈容器的 [For Each 迴圈編輯器] 會提供列舉值。
若要在 Business Intelligence Development Studio 中使用範例
開啟 [Business Intelligence Development Studio]。
在功能表中,按一下 [檔案/新增/專案]。
在 [新增專案] 對話方塊的 [專案類型] 中,按一下 [商務智慧專案],然後在右窗格中按一下 [Integration Services 專案]。
在 [名稱] 方塊中,輸入 ForEachDirectory 作為新專案的名稱。
在 [位置] 方塊中,選取要儲存檔案的位置。按一下 [確定]。
在 [方案總管] 對話方塊中,按兩下 Package.dtsx。
在 [位置] 方塊中,選取要儲存檔案的位置。按一下 [確定]。
在 [方案總管] 對話方塊中,按兩下 Package.dtsx。
將 ForEachLoop 容器加入封裝的 [控制流程] 介面中。
按兩下在第一個步驟加入的 ForEachLoop 容器,來開啟 Foreach Loop Editor。
按一下 [集合] 節點,並從 [列舉值] 下拉功能表中選取 ForEachDirectory 列舉值。
指定 ForEachDirectory 列舉值的屬性值,然後按一下 [確定]。
測試範例
將範例元件加入至封裝中的「資料流程」工作之後,就可以在 SSIS 設計師中進行設定。ForEachDirectory 列舉值有五個屬性控制其執行行為。
屬性 | 描述 |
---|---|
RootDirectorySource |
指定 RootDirectory 屬性的來源,該屬性可由 ConnectionManager、Variable 或 DirectInput 設定。 |
RootDirectory |
指定列舉值開始列舉的目錄。 |
IncludeRootDirectory |
指定根目錄是否包含在列舉的目錄中。 |
EnumerateSubFolders |
指定根目錄所包含之資料夾的子資料夾是否會列舉。 |
SiblingFoldersBeforeSubFolders |
當 EnumerateSubFolders 為 true,指定列舉值是否先列舉同層級資料夾,或先列舉完整目錄結構。 |
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 7 月 17 日 |
|
2005 年 12 月 5 日 |
|