SSIS的检查点文件用法
2008-01-24 17:11:53 来源:IT专家网 作者:戴羽 点击:
SQL Server集成服务提供了一个在某种程度上自动从失败处重启处理的机制。这个机制是通过使用检查点文件来提供的。它帮助我们配置ETL解决方案在发生一个执行错误后的执行流。这篇文章解释了检查点文件和集成服务的一些有用任务的使用。
如果你是一个ETL应用程序开发人员或是管理员,那么你可能会遇到的一个问题就是发生失败后重新运行整个ETL应用程序。从失败处重新运行应用程序通常是不可能的,这有许多原因,但是主要是由于很难执行日志记录和维护应用程序的每一步以及配置基于可用日志的执行。SQL Server集成服务提供了一个在某种程度上自动从失败处重启处理的机制。这个机制是通过使用检查点文件来提供的。它帮助我们配置ETL解决方案在发生一个执行错误后的执行流。这篇文章解释了检查点文件和集成服务的一些有用任务的使用。
这篇文章包括:
· 建立检查点文档
· 在for loop中的检查点用法
· 在事件中的检查点用法
· 其它约束
建立检查点文档
检查点文件的配置从建立三个包的属性开始:CheckpointFileName、CheckpointUsage、SaveCheckpoints。这些属性在检查点分类下和包的属性一样有效(看分类视图的属性)。CheckpointFileName 运行我们设置检查点文件的路径。因为信息是以XML格式存储的,给这个文件一个XML扩展会更好,不过这不是必需的(例如D:\Checkpoint Files/LoadDataPackage.xml)。
第二个属性,CheckpointUsage 告诉集成服务这个包是否需要一个检查点文件。它可以使用三个值。Never、IfExists和Always。Never 表示没有使用检查点文件,包的执行必须从头开始(或者失败后重启)。Always 要求每一个执行使用检查点文件。一旦设置为Always,没有检查点文件包就不能启动。IfExists表示如果只存在检查点文件,那么包使用检查点文件。IfExists是CheckpointUsage最好的设置,因为如果包发生错误,那么将只存在检查点文件。记住,一旦设置了检查点设置,包会在执行过程中在给定位置创建检查点文件,然后在成功执行后将它删除。只有在失败的情况下才会将检查点文件保留下来。
SaveChekpoints 表示包是否需要保存检查点。它的值是true或false。如果包需要在失败后重启那么这个值要设置为true。
最后一步是配置每一个任务,指定检查点中要包含的内容。这通过FailPackageOnFailure 属性来完成。这个属性要求设置为True,使得检查点中的任务可用。
好了,让我们把这个建起来。打开商业智能开发套件,并启动一个新的集成服务项目。添加两个文件系统任务。创建三个变量用于为两个文本文件保存两个物理路径和一个为目的地保存的路径。如下面所示地命名变量。你可以根据你的文件夹结构改变路径。

这是假定场景:我们从客户端接收两个文本文件到E:\Clients\Files\文件夹下。一个包加载了这些文件并将它们拷贝到目的地(D:\FilesReceived)。一旦拷贝了它们,它就提取数据并将其转换到数据库中的相关表中。你的包可能看起来是这样的:
注意,因为这个样例显示了检查点的执行,转换和转移还没有执行,因此它们用两个脚本任务弹出窗口信息显示“记录成功保存!”来显示。现在创建两个文本文件Transaction1.txt和Transaction2.txt。不要把它们拷贝到E:\Clients\Files\下。现在像下面这样配置系统任务:

添加信息到两个脚本任务。现在包做好了。注意我们没有配置任何与检查点相关的东西。首先我们没有设置就运行包,然后了解问题,之后尝试使用检查点解决问题。
在开始之前,让我们确定包在运行。将两个文本文件都放在E:\Clients\Files\文件夹下。运行这个包并观察文件是否拷贝到目的地中和脚本任务的信息是否显示了。它应该是可以的。好了,让我们开始测试这个检查点。从源文件夹下删除Transaction2.txt 并运行它。输出应该如下面所示:

加载Transaction2文件任务失败,因为没有可用的Transa