SSIS入门教程

SSIS入门教程

Execute Process包示例[翻译] Level 100

注意:本文仅适用于SQL Server 2005标准版及以上版本,不适用于SQL Server 2005 Express

Execute Process(执行进程)包是一个用于演示如何在包中执行可执行应用程序的例子。在这个包中有一个执行进程的任务,用于执行Expand工具(expand.exe),这里的expand 工具会把一个包含一个excel文件的cab文件解压缩,这样我们在接下来的任务中就可以把这个xls作为数据源。在包第一次运行时,会有一个Execute SQL 任务,它会自动创建一张Execute_Process_Table表,而用于创建该表的T-SQL声明语句是保存在一个sql文件中的。当第二次运行Execute SQL任务时,会先判断该表是否存在,如果存在就运行TRUNCATE TABLE。

这个任务会使用两个OLEDB连接,第一个OLEDB会从Excel数据表中读取数据,第二个OLEDB则会把读到的数据写入Execute_Process_Table表中。

配置需求

执行该示例需要具备以下一些要求

?示例所要用到的包和数据文件必须安装在本地硬盘上

?你必须安装AdventureWorks数据库,并且对该数据库拥有管理员级权限

?如果你仅仅想通过命令行运行示例包,你必须安装SQL Server 2005 Integration Services(SSIS)

?如果你是想在设计器中打开并运行包,你必须安装Business Intelligence Development Studio

?你可能需要修改Execute Process任务中expand工具的路径,这是由你所使用的操作系统决定的。不同的操作系统,expand.exe文件的存储位置会有所不同,因此可能与示例中的路径有差异。要修改Execute Process Task,右击Control Flow(控制流) 选项卡中的Execute Process任务,点选Edit。在Execute Process Task

Editor(进程执行任务编辑器)中,设置Executable属性的路径为为expand的真正存储路径。

更多有关如何安装示例的信息,可以参见SQL Server Books Online中的安装Integration Services示例包。

示例包的存储位置

假设示例安装在默认目录下,则Execute Process示例包位于以下位置:

C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteProcess Sample\ExecuteProcess\

运行示例包必须包含下面这些文件

运行示例

这个包既可以在命令行下用dtexec工具执行,也可以在Business Intelligence Development Studio中运行

如果你使用的是非英语版Windows系统,你可能需要更新connection managers(连接管理器)中用到的所有文件的ConnectionString属性,只有这样这个包才能正常运行。请确认连接管理器中的路径是否有效,如果需要,请把路径修改为正确Program Files本地路径。

使用dtexec执行包

1. 打开命令行窗口(控制台)

2. 更改目录到C: Program Files\Microsoft SQL Server\90\DTS\Binn,这是dtexec的

执行路径

3. 键入命令:

dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration

Services\Package Samples\ExecuteProcess

Sample\ExecuteProcess\UsingExecuteProcess.dtsx"

4. 按回车键

在Business Intelligence Development Studio运行包

1. 打开Business Intelligence Development Studio

2. 在文件菜单中,点Open > Project / Solution

3. 更改目录至ExecuteProcess Sample目录下,双击ExecuteProcess.sln

4. 在Solution Explorer(解决方案浏览器)中,右击SSIS Package目录下的

ExecuteProcess.dtsx文件,然后点击Execute Package

示例中包含的对象

SQL Server Integration Services教程2:添加循环

在教程1:创建简单 ETL 包中,创建了从单个平面文件源提取数据的包,然后使用查找转换功能对数据进行了转换,最后将数据加载到AdventureWorksDW 示例数据库的FactCurrency 事实数据表中。

但是,提取、转换和加载 (ETL) 过程很少使用单个平面文件。典型的 ETL 过程从多个平面文件源提取数据。从多个源提取数据需要采用迭代控制流。Microsoft SQL Server 2005 Integration Services (SSIS) 的一项最有可能出现的功能是您将很容易向包中添加迭代或循环。

Integration Services 为循环遍历包提供了两种容器类型:Foreach 循环容器和 For 循环容器。Foreach 循环容器使用枚举器执行循环,而 For 循环则通常使用变量表达式。本教程使用 Foreach 循环容器。

Foreach 循环容器使包能够对指定枚举器的每个成员重复执行控制流。使用 Foreach 循环容器,可以枚举:

? ADO 记录集行和架构信息

?文件和目录结构

?系统、包和用户变量

? SQL 管理对象 (SMO)

在本教程中,您将修改在教程1中创建的简单 ETL 包,以便利用 Foreach 循环容器。还将设置用户定义的包变量,以便使该教程包能够迭代遍历文件夹中的所有平面文件。

复制 Lesson 1 包

在此任务中,将创建 SSIS Tutorial 项目中包含的 Lesson 1.dtsx 包的副本。您将使用这一新副本来完成教程2剩余部分。

创建 Lesson 2 包

1. 如果 Business Intelligence Development Studio 尚未打开,请单击“开始”,指向“所有程序”,指向 Microsoft SQL Server 2005,再单击 Business Intelligence Development Studio。

2. 在“文件”菜单上,依次单击“打开”、“项目/解决方案”、SSIS Tutorial 文件夹,然后再次单击“打开”,最后双击 SSIS Tutorial.sln。

3. 在解决方案资源管理器中,右键单击 Lesson 1.dtsx,再单击“复制”。

4. 在解决方案资源管理器中,右键单击“SSIS 包”,再单击“粘贴”。

默认情况下,复制的包将命名为 Lesson 2.dtsx。

5. 在解决方案资源管理器中,双击 Lesson 2.dtsx 打开该包。

添加和配置 Foreach 循环容器

在本任务中,您将添加循环访问平面文件的文件夹的功能,并将教程1中使用的同一数据流转换应用于其中的每个平面文件。实现方法是将 Foreach 循环容器添加到控制流中并进行

配置。

所添加的 Foreach 循环容器必须能够连接到该文件夹中的每个平面文件。由于该文件夹中的所有文件都具有相同格式,因此 Foreach 循环容器可以使用同一平面文件连接管理器来连接其中的每个文件。该容器所使用的平面文件连接管理器与您在教程1中创建的平面文件连接管理器相同。

目前,教程1中的平面文件连接管理器只连接一个特定的平面文件。若要循环地连接该文件夹中的每个平面文件,必须同时对 Foreach 循环容器和平面文件连接管理器进行如下配置:? Foreach 循环容器将该容器的枚举值映射为用户定义的包变量。然后,该容器将使用此用户定义变量来动态修改平面文件连接管理器的 ConnectionString 属性,并循环连接该文件夹中的每个平面文件。

?平面文件连接管理器使用用户定义的变量填充在教程1中创建的连接管理器的ConnectionString 属性,以修改该连接管理器。

本任务中的过程向您显示如何创建和修改 Foreach 循环容器以使用用户定义的包变量,以及如何将数据流任务添加到该循环中。您将学习如何修改平面文件连接管理器,以便在下一任务中使用用户定义的变量。

在对该包进行这些修改后,当该包运行时,Foreach 循环容器将循环访问示例数据文件夹中的文件集合。每次找到一个与条件相匹配的文件时,Foreach 循环容器就会将用该文件名填充用户定义的变量,将用户定义的变量映射到 SampleCurrencyData 平面文件连接管理器的ConnectionString 属性,然后对该文件运行数据流。因此,在 Foreach 循环的每次迭代中,数据流任务都将使用一个不同的平面文件。

注意:

由于 Microsoft SQL Server 2005 Integration Services (SSIS) 区分控制流和数据流,因此添加到控制流的任何循环都不需要对数据流进行修改。因此,无需更改在教程1中创建的数据流。

添加 Foreach 循环容器

1. 在 Business Intelligence Development Studio 中,单击“控制流”选项卡。

2. 在“工具箱”中,展开“控制流项”,然后将“Foreach 循环容器”拖到“控制流”选项卡的设计图面上。

3. 右键单击新添加的“Foreach 循环容器”,并选择“编辑”。

4. 在“Foreach 循环编辑器”对话框的“常规”页上,为“名称”输入 Foreach File in Folder。

为 Foreach 循环容器配置枚举器

1. 单击“集合”。

2. 在“集合”页上,选择“Foreach 文件枚举器”。

3. 在“枚举器配置”组中,单击“浏览”。

4. 在“浏览文件夹”对话框中,找到包含教程示例数据的示例数据文件夹。

默认情况下,教程示例数据安装在c:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Tutorial\Creating a Simple ETL Package\Sample Data 文件夹中。

5. 在“文件”框中,键入 Currency_*.txt。

将枚举器映射为用户定义的变量

1. 单击“变量映射”。

2. 在“变量映射”页的“变量”列中,单击空单元格并选择“<新建变量…>”。

3. 在“添加变量”对话框中,为“名称”键入 varFileName。

4. 单击“确定”。

5. 再次单击“确定”,退出“Foreach 循环编辑器”对话框。

将数据流任务添加到循环中

?将“提取示例货币”数据流任务拖到现已重命名为 Foreach File in Folder 的Foreach 循环容器中。

修改平面文件连接管理器

在本任务中,您将修改在教程1中创建和配置的平面文件连接管理器。平面文件连接管理器在最初创建时配置为静态加载单个文件。若要启用平面文件连接管理器以重复加载文件,您必须修改连接管理器的ConnectionString 属性以接受用户定义的变量User:varFileName,该变量包含要在运行时加载的文件的路径。

通过将连接管理器修改为使用用户定义的变量 User::varFileName 的值并填充连接管理器的 ConnectionString 属性,连接管理器将能够连接到不同的平面文件。在运行时,Foreach 循环容器的每次迭代都将动态更新 User::varFileName 变量。更新变量时,还会使连接管理器连接到不同的平面文件,并使数据流任务处理其他数据集。

配置平面文件连接管理器以使用连接字符串的变量

1. 在“连接管理器”窗格中,单击 SampleCurrencyData。

2. 在“属性”窗口中,针对“表达式”,单击空单元,然后单击省略号按钮“(…)”。

3. 在“属性表达式编辑器”对话框的“属性”列中,键入或选择ConnectionString。

4. 在“表达式”列中,单击省略号按钮“(…)”以打开“表达式生成器”对话框。

5. 在“表达式生成器”对话框中,展开“变量”节点。

6. 将变量 User::varFileName 拖到“表达式”框中。

7. 单击“确定”关闭“表达式生成器”对话框。

8. 再次单击“确定”关闭“属性表达式编辑器”对话框。

测试 Lesson 2 教程包

使用现在配置的 Foreach 循环容器和平面文件连接管理器,Lesson 2 包可以迭代遍历示例

数据文件夹中由 14 个平面文件组成的集合。每次找到与指定的文件名条件匹配的文件名时,Foreach 循环容器都将用该文件名填充用户定义的变量。该变量又会更新平面文件连接管理器的 ConnectionString 属性,并与新平面文件建立连接。然后,在连接到文件夹中的下一个文件之前,Foreach 循环容器将对新平面文件中的数据运行未修改的数据流任务。使用以下过程可以测试已添加到包中的新循环功能。

测试 Lesson 2 教程包

1. 在“调试”菜单上,单击“启动调试”。

包将运行。可以在“输出”窗口中或单击“进度”选项卡来验证每个循环的状态。例如,可以看到 1097 行从文件 Currency_VEB.txt 添加到目标表中。

2. 当包运行完毕后,在“调试”菜单上,单击“停止调试”。

SQL Server Integration Services教程3 :添加包配置

包配置允许您从开发环境的外部设置运行时属性和变量。配置允许您开发灵活的并且易于部署和分发的包。Microsoft SQL Server 2005 Integration Services (SSIS) 提供了以下配置类型:

? XML 配置文件

?环境变量

?注册表项

?父包变量

? SQL Server 表

在本教程中,将修改在教程2:添加循环中创建的简单 Integration Services 包,以便利用包配置。使用包配置向导,将创建一个 XML 配置,以便通过使用映射到 Directory 属性的包级别变量来更新 Foreach 循环容器的 Directory 属性。在创建配置文件之后,将从开发环境的外部修改该变量的值,并将修改后的属性指向新的示例数据文件夹。再次运行包时,配置文件将填充该变量的值,而该变量又会更新 Directory 属性。结果,包将迭代遍历新数据文件夹中的文件,而不是迭代遍历在该包中硬编码的原始文件夹中的文件。

复制 Lesson 2 包

在此任务中,将创建 SSIS Tutorial 项目中包含的 Lesson 2.dtsx 包的副本。您将使用这一新副本来完成教程3剩余部分。

创建 Lesson 2 包

1. 如果尚未打开 Business Intelligence Development Studio,请单击“开始”,依次指向“所有程序”、Microsoft SQL Server 2005,再单击 Business Intelligence Development Studio。

2. 在“文件”菜单上,单击“打开”,单击“项目/解决方案”,选择 SSIS Tutorial,再单击“打开”,然后双击 SSIS Tutorial.sln。

3. 在解决方案资源管理器中,右键单击 Lesson 2.dtsx,再单击“复制”。

4. 在解决方案资源管理器中,右键单击“SSIS 包”,再单击“粘贴”。

默认情况下,复制的包命名为 Lesson 3.dtsx。

5. 在解决方案资源管理器中,双击 Lesson 3.dtsx 打开该包。

启用并配置包配置

在本任务中,将使用包配置向导来启用包配置。您将使用该向导生成 XML 配置文件,该文件包含 Foreach 循环容器的 Directory 属性的配置设置。Directory 属性的值由新的包级别变量在运行时提供,您可以更新该变量。另外,将填充要在测试期间使用的新的示例数据文件夹。

创建映射到 Directory 属性的新的包级别变量

1. 在“控制流”选项卡的设计图面中单击任何地方。这将把作用域设置为将要创建的变量的包。

2. 在 SSIS 菜单上,单击“变量”。

3. 在“变量”窗口中,单击“添加变量”图标。

4. 在“名称”框中,键入 varFolderName。

5. 验证“作用域”是否显示了包的名称。

注意:

在本教程中,包的名称可能显示为 Lesson 1,这是因为没有在设计时更新内部对象引用。

1. 将 varFolderName 变量的数据类型设置为“字符串”。

2. 返回到“控制流”选项卡,并双击“文件夹中的 Foreach 文件”容器。

3. 在“集合”页上,单击“表达式”。

4. 在“属性表达式编辑器”内的属性列表中,选择 Directory。

5. 在“表达式”框中,单击空单元,再单击省略号按钮(…)。

6. 在“表达式生成器”中,展开“变量”文件夹,并将变量 User:varFolderName 拖到“表达式”框中。

7. 单击“确定”按钮。

启用包配置

1. 在设计图面上,单击任意空白区域。

2. 在 SSIS 菜单上,单击“包配置”。

3. 在“包配置组织程序”对话框中,选择“启用包配置”,再单击“添加”。

4. 在包配置向导的欢迎页上,单击“下一步”。

5. 在“选择配置类型”页上,验证“配置类型”是否已设置为“XML 配置文件”。

6. 在“选择配置类型”页上,单击“浏览”。

7. 默认情况下,“选择配置文件位置”对话框将打开至项目文件夹。

8. 在“选择配置文件位置”对话框中,键入 SSISTutorial,再单击“保存”。

9. 在“选择配置类型”页上,单击“下一步”。

10. 在“选择要导出的属性”页上的“对象”窗格中,展开“变量”,展开varFolderName,展开“属性”,再选择“值”。

11. 在“选择要导出的属性”页上,单击“下一步”。

12. 在“完成向导”页上,键入该配置的配置名称,如 SSIS Tutorial Directory configuration。这是显示在包配置组织程序中的配置名称。

13. 单击“完成”。

14. 单击“关闭”。

15. 向导将创建名为 SSISTutorial.dtsConfig 的配置文件,该文件包含特定变量的 value 的配置设置,此变量用于设置枚举器的 Directory 属性。

注意:

配置文件通常包含有关包属性的复杂信息,但对于本教程,唯一的信息应当是

[User::varFolderName].Properties[Value]。

创建并填充新的示例数据文件夹

1. 在 Windows 资源管理器中,在驱动器的根位置(例如,C:\)创建名为 New Sample Data 的新文件夹。

2. 打开c:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Tutorial\Creating a Simple ETL Package\Sample Data 文件夹,然后从该文件夹中复制三个示例文件。

3. 在 New Sample Data 文件夹中,粘贴所复制的文件。

修改目录属性配置值

在此任务中,将为包级变量User::varFolderName 的Value 属性,修改存储在SSISTutorial.dtsConfig 文件中的配置设置。该变量可以更新 Foreach 循环容器的Directory 属性。修改后的值将指向前一个任务中创建的 New Sample Data 文件夹。修改了配置设置并运行包以后,该变量将使用从配置文件填充的值(而不是包中最初配置的目录值),来更新 Directory 属性。

修改目录属性的配置设置

1. 在记事本或其他文本编辑器中,找到并打开在前一个任务中使用包配置向导创建的 SSISTutorial.dtsConfig 配置文件。

2. 更改 ConfiguredValue 元素的值,使其与上一个任务中创建的 New Sample Data 文件夹匹配。请不要将路径用引号括起来。

3. 保存更改,再关闭文本编辑器。

测试 Lesson 3 教程

在运行时,包将从运行时更新的变量中获取 Directory 属性的值,而不使用您在创建该包时指定的原始目录名。该变量的值由 SSISTutorial.dtsConfig 文件填充。

若要验证该包在运行时是否使用新值更新了 Directory 属性,只需执行该包。由于只向新目录中复制了三个示例数据文件,因此该数据流将只运行三次,而不遍历原始文件夹中的 14 个文件。

测试 Lesson 3 教程包

1. 在“调试”菜单上,单击“启动调试”。

2. 该包运行完成后,请在“调试”菜单上单击“停止调试”。

SQL Server Integration Services教程4:添加日志记录

添加日志记录

Microsoft SQL Server 2005 Integration Services (SSIS) 包含日志记录功能,这些功能使您可以通过提供任务和容器事件跟踪来对包执行进行疑难排解和监控。日志记录功能非常灵活,可以在包级别或在包中的各个任务和容器上启用。可以选择要记录的事件,也可以对单个包创建多个日志。

日志记录由日志提供程序提供。每个日志提供程序可以将日志记录信息写入不同的格式和目标类型。Integration Services 提供了以下日志提供程序:

?文本文件

? SQL Server Profiler

? Windows 事件日志

? SQL Server

? XML 文件

?在本教程中,您将为教程3:添加包配置中创建的包创建副本。使用这个新包,您将添加并配置日志记录,以在包执行过程中监控特定事件。

复制 Lesson 3 包

在本任务中,您将创建 SSIS Tutorial 项目中包含的 Lesson 3.dtsx 包的副本。您将使用这一新副本来完成教程4剩余部分。

由于包配置信息将随包本身一同复制,所以您还必须修改包配置以反转上一教程中所做的一项更改,并将 ForEach 循环指回原始的示例数据文件夹。

创建 Lesson 4 包

1. 如果 Business Intelligence Development Studio 尚未打开,请单击“开始”,指向“所有程序”,指向 Microsoft SQL Server 2005,再单击 Business Intelligence Development Studio。

2. 在“文件”菜单上,单击“打开”,单击“项目/解决方案”,选择 SSIS Tutorial,再单击“打开”,然后双击 SSIS Tutorial.sln。

3. 在解决方案资源管理器中,右键单击 Lesson 3.dtsx,再单击“复制”。

4. 在解决方案资源管理器中,右键单击“SSIS 包”,再单击“粘贴”。

默认情况下,复制的包命名为 Lesson 4.dtsx。

5. 在解决方案资源管理器中,双击 Lesson 4.dtsx 打开该包。

修改包配置

1. 在记事本或其他任何文本编辑器中,找到并打开您在上一教程中使用包配置向导创建的 SSISTutorial.dtsConfig 配置文件。

2. 将 ConfiguredValue 元素的值更改回原始的示例数据文件夹。默认情况下,示例数据安装在c:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Tutorial\Creating a Simple ETL Package\Sample Data 文件夹中。

注意:

在 XML 配置文件中,无需使用引号将路径括起。

1. 保存更改,再关闭文本编辑器。

添加和配置日志记录

在该任务中,将要为 Lesson 4.dtsx 包中的数据流启用日志记录。然后,将配置一个文本文件日志提供程序,以记录 PipelineExecutionPlan 和 PipelineExecuteTrees 事件。该文本文件日志提供程序可以创建便于查看并可轻松传输的日志。由于便于使用,所以这些日志文件在包的基本测试阶段非常有用。

向包中添加日志记录

1. 在 SSIS 菜单上,单击“日志记录”。

2. 在“配置 SSIS 日志”对话框的“容器”窗格中,确保选中了最前面的表示包的对象。

3. 在“提供程序和日志”选项卡的“提供程序类型”框中,选择“用于文本文件的SSIS 日志提供程序”,然后单击“添加”。

Integration Services 将向包中添加一个默认名称为用于文本文件的 SSIS 日志提供程序的新文本文件日志提供程序。现在便可对新的日志提供程序进行配置。

4. 在“名称”列中,键入 Lesson 4 Log File。

5. 也可以修改“说明”。

6. 在“配置”列中,单击“<新建连接>”,以指定用于写入日志信息的目标。

在“文件连接管理器编辑器”对话框中,对“使用类型”选择“创建文件”,然后单击“浏览”。默认情况下,“选择文件”对话框将打开项目文件夹,但您可以将日志信息保存到任何位置。

7. 在“选择文件”对话框的“文件名”框中,键入 TutorialLog.log,然后单击“打开”。

8. 单击“确定”关闭“文件连接管理器编辑器”对话框。

9. 在“容器”窗格中,展开包容器层次结构的所有节点,然后清除 Extract Sample Currency Data 复选框之外的所有复选框。

10. 在“详细信息”选项卡的“事件”列中,选择 PipelineExecutionPlan 和PipelineExecutionTrees 事件。

11. 单击“高级”可查看日志提供程序将为每个事件写入日志的详细信息。默认情况下,将为您指定的事件自动选择所有信息类别。

12. 单击“基本”返回到“详细信息”选项卡。

13. 在“提供程序和日志”选项卡上的“名称”列中,选择 Lesson 4 Log File。为包创建日志提供程序后,可以选择取消选择它以临时关闭日志记录,而不必删除和重新创建日志提供程序。

14. 单击“确定”。

测试 Lesson 4 教程

在该任务中,将运行 Lesson 4.dtsx 包。执行完包之后,将验证日志提供程序所生成的日志文件的内容。

运行 Lesson 4 教程包

1. 在“调试”菜单上,单击“启动调试”。

2. 当包运行完毕后,在“调试”菜单上,单击“停止调试”。

检查生成的日志文件

?使用记事本或其他任何文本编辑器,打开 TutorialLog.log 文件。

?尽管为 PipelineExecutionPlan 和 PipelineExecutionTrees 事件所生成的信息的语义超出了本教程的讨论范围,但是,可以看到第一行列出了在“配置 SSIS 日志”对话框的“详细信息”选项卡中所指定的信息字段。此外,可以验证已为 Foreach 循环的每个迭代记录了所选择的两个事件:PipelineExecutionPlan 和 PipelineExecutionTrees。

相关文档
最新文档