SQL Server Integrated Services(SSIS)平台下,通常一个package运行失败后,经过失败原因的检查和处理,会从头到尾完整的再运行一遍。由此带来的问题是:如果package运行到最后一步失败了,刚好成功运行的有非常耗时数据流任务,在之后将不得不重新运行这些任务。通过对ETL package的checkpoints进行设置可以从失败的任务开始重新运行该package,大大的减少了重新运行package所耗的时间。
什么是Checkpoints?
在SSIS中,当package执行失败时,Checkpoints允许将信息保存到Checkpoints文档中,通过设置,可以决定下次执行时从哪个位置继续执行。
Checkpoints的属性:
- CheckpointFileName:设置存放Checkpoints信息的路径,可以事先创建好文件,通常使用.txt格式。
- CheckpointUsage:决定是否使用Checkpoints,有三个选项:“Never”,表示不使用Checkpoints文件,package每次都从起点开始运行;“IfExists”表示若存在Checkpoints Package将上一次执行失败的地方重新启动,若不存在,将从package起点开始运行;”Always”表示总是使用Checkpoints文件,package每次都从执行失败的地方开始执行,如果package没有发现Checkpoints文件,package将不能执行。
- SaveCheckpoints:“True”表示保存Checkpoints文件,”False”表示不保存Checkpoints文件。
与Checkpoints相关的另外一个属性:FailPackageOnFailure,当容器遇到执行错误时,将终止程序包的执行,程序包从容器中直接重启。这个属性可以分别对package和控制流进行设置。若对package设置为true,而运行失败的控制流设置为false,则下一次执行时将从运行失败的下一个控制流开始执行;若运行失败的控制流设置为true,则不管package的设置是否为true&#