ForEachDirectory 示例
更新日期: 2005 年 12 月 5 日
此代码示例说明了如何使用 .NET Framework 和托管代码创建自定义枚举器和用以设置枚举器属性的自定义用户界面。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 开发中心中的“安全简讯:.NET Framework 中的强名称和安全性”。 在后续步骤中,您需要密钥文件中的公钥标记。若要获取公钥标记,请先通过在命令提示符下运行以下命令来提取密钥文件中的公钥:
sn -p SampleKey.snk SampleKeyPublic.snk
通过在命令提示符下运行以下命令来显示公钥标记:
sn -t SampleKeyPublic.snk
将公钥标记复制到剪贴板中或保存以便将来使用。
生成示例
打开 Microsoft Visual Studio 2005。
从**“文件”|“打开”菜单中,单击“项目”**并从所需的 Samples 目录中打开 ForEachDirectory.sln,对于 C# 语言该文件格式为 CS,对于 Visual Basic 语言该文件格式为 VB。
在解决方案资源管理器中,选择 ForEachDirectory.cs 或 ForEachDirectory.vb 代码。
在代码中查找 DtsTask 属性。在该代码行中,替换 IncrementTask.cs 中 UITypeName 特性属性的公钥标记的现有值。应使用上一步中 sn -t 命令中显示的值替换“PublicKeyToken =”后面的字母数字值。
单击菜单上的**“生成”/“生成 ForEachDirectory”**,以生成该项目的 DLL。
将 DLL 安装到 ForEachEnumerator 文件夹和全局装配缓存
此示例有 Visual Basic 和 C# 两个版本。为了区分两个版本示例的程序集,在输出程序集的名称后追加了 CS 或 VB。成功生成组件后,必须将该组件复制到 ForEachEnumerators 文件夹,然后将其添加到全局程序集缓存,以便在 Business Intelligence Development Studio 中使用。
将组件安装到 ForEachEnumerators 文件夹
将程序集(ForeachDirectoryCS.dll 或 ForeachDirectoryVB.dll)复制到位于 %system%\Program Files\Microsoft SQL Server\90\DTS\ForEachEnumerators 的文件夹中。
打开 %system%\assembly 处用于全局程序集缓存的目录。对于大多数计算机来说,该目录将是 C:\Windows\assembly。
选择第一个窗口中的程序集,然后将其拖放到包含 assembly 文件夹的窗口中。
通过拖放程序集的方式将组件安装到全局程序集缓存中
将程序集(ForeachDirectoryCS.dll 或 ForeachDirectoryVB.dll)复制到位于 %system%\Program Files\Microsoft SQL Server\90\DTS\ForEachEnumerators 的文件夹中。
打开 %system%\assembly 处用于全局程序集缓存的目录。对于大多数计算机来说,该目录将是 C:\Windows\assembly。
选择第一个窗口中的程序集,然后将其拖放到包含 assembly 文件夹的窗口中。
使用 gacutil.exe 将组件安装到全局程序集缓存中
打开命令提示符窗口。
键入以下命令以将 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 添加到全局程序集缓存。但是,只需将代码编译到特定目录。
完成这些步骤后,便可以在 ForEach 循环容器的**“ForEach 循环编辑器”**中使用枚举器。
在 Business Intelligence Development Studio 中使用示例
打开 Business Intelligence Development Studio。
从菜单中,单击**“文件”/“新建”/“项目”**。
从**“新建项目”对话框的“项目类型”中,单击“Business Intelligence 项目”,并在右窗格中,单击“Integration Services 项目”**。
在**“名称”**框中,键入 ForEachDirectory 作为新项目的名称。
在**“位置”框中,选择文件的保存位置。单击“确定”**。
从解决方案资源管理器对话框中,双击 Package.dtsx。
在**“位置”框中,选择文件的保存位置。单击“确定”**。
从解决方案资源管理器对话框中,双击 Package.dtsx。
将 ForEachLoop 容器添加到包的“控制流”图面。
通过双击第一步中添加的 ForEachLoop 容器来打开 Foreach 循环编辑器。
单击**“集合”**节点,并从枚举器下拉框中选择 ForEachDirectory 枚举器。
指定 ForEachDirectory 枚举器的属性值,然后单击**“确定”**。
测试示例
将示例组件添加到包中的数据流任务中后,可以在 SSIS 设计器中对其进行配置。ForEachDirectory 枚举器具有五个属性,用于控制其执行行为。
属性 | 说明 |
---|---|
RootDirectorySource |
指定 RootDirectory 属性的来源,可通过 ConnectionManager、变量或 DirectInput 进行设置。 |
RootDirectory |
指定枚举器开始枚举的目录。 |
IncludeRootDirectory |
指定枚举目录中是否包括根目录。 |
EnumerateSubFolders |
指定是否枚举根目录所包含文件夹的子文件夹。 |
SiblingFoldersBeforeSubFolders |
当 EnumerateSubFolders 为 true 时,该属性指定枚举器是先枚举同级文件夹还是先枚举完整目录结构。 |
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 7 月 17 日 |
|
2005 年 12 月 5 日 |
|