SSIS的检查点文件用法

豆豆网   技术应用频道   2008年01月27日  【字号: 收藏本文

内容摘要:SQL Server集成服务提供了一个在某种程度上自动从失败处重启处理的机制。这个机制是通过使用检查点文件来提供的。它帮助我们配置ETL解决方案在发生一个执行错误后的执行流。这篇文章解释了检查点文件和集成服务的一些有用任务的使用。

  进一步的,我注意到当For Loop 容器包含了不止一个通过优先约束连接的任务时,失败发生后重启的时候,它从失败处开始For Loop容器,但是是从循环中的第一个任务开始而不是从失败的任务开始。这不管配置了怎样的设置都会发生;这证明我们没有控制检查点中for loop的任务的方法。

  在事件中的检查点用法

  我发现在事件执行上保存检查点也有点不同。而认识到这一点是非常重要的,因为我们经常编写事件代码。一旦使用一个检查点文件取决于失败点重启了包,它会启动一些事件而另一些则不。让我们配置一个包用于测试。创建一个新的包并添加一个脚本任务。设置检查点配置如下面所示:

SSIS的检查点文件用法

  将下面的代码添加到脚本任务中去。它只是弹出一个信息。

以下是引用片段:
  'code1
  MsgBox("Scripttaskexecuted!")
  Dts.TaskResult=Dts.Results.Success

  配置脚本任务中的如下事件。添加一个脚本任务到每一个事件和显示这个事件的适当信息框的代码中去。

SSIS的检查点文件用法

  注意,在事件中没有配置与检查点关联的设置。运行这个包用于测试。你将获得按上面的列表定制的信息。“Script task executed”信息将在OnPostValidate和OnInformation 事件之间显示。改变控制流中主要脚本任务的代码。

以下是引用片段:
  'code2
  MsgBox("Scripttaskfailed!")
  Dts.TaskResult=Dts.Results.Failure

  这会导致包执行失败。运行包并注意信息。包从OnPreExecute到OnPostValidate显示事件信息、主要的脚本任务信息,然后失败。这会导致检查点文件仍然保存在文件夹中。如果你通过将代码2替换为代码1来修正错误并再次执行这个包,你将看到任务启动了但一开始的三个事件没有启动。它从OnInformation事件开始启动事件。记住,即使事件中的脚本任务设置为FailPackageOnFailure = true 这个情况也是会发生的。当你对要执行事件的包使用检查点时要保持谨慎。

  其它约束

  检查点只能作用于控制流任务。与数据流相关的任务不能被检查点控制。此外,ForEach Loop 容器也不能被检查点控制。它从头迭代这个循环,而不是从失败处启动。如果你需要从ForEach Loop 里失败任务处开始这个迭代,那么你需要在它上面执行你自己的代码。

  你可能在包里包含了一些安全信息。如果使用了检查点,它可能在失败情况下在检查点文件里存储安全信息。因此,最好为检查点文档设置一个所有人都访问不到的安全位置。

来源:IT专家网    作者:戴羽    责编:豆豆技术应用

正在加载评论...