执行sql任务出错后,SSIS 2008卡住了

时间:2012-08-29 19:47:45

标签: ssis

我正在研究这个SSIS包,我故意在执行sql任务上发出错误来测试失败优先级约束但是它会卡在执行sql任务中,错误是。它应该遵循失败优先级,并在遇到错误时执行下一步。

基本上,执行sql任务的错误是我截断了一个不存在的表...在现实生活中,它可能是因为拼写错误而发生的。

我已经将delayvalidation设置为true但它仍然无效。

http://i69.photobucket.com/albums/i47/boxingpics/Untitled-2.jpg

我该如何解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:1)

在Precedence Constraint Editor对话框中(右键单击优先约束并选择“Edit ...”),选择“Logical OR。一个约束必须计算为True”。

Working with Precedence Constraints in SSIS

  

逻辑AND:指向受约束的可执行文件的所有优先约束必须求值为true才能运行该可执行文件。这是默认选项。如果选中,则箭头为实线。

     

逻辑OR:只有一个指向受约束可执行文件的优先约束必须求值为true才能运行该可执行文件。如果选择此选项,则箭头会点缀。

答案 1 :(得分:0)

我遇到了同样的问题,并通过执行以下操作解决了这个问题:

  1. 添加包级别变量,类型为Int
  2. 的ErrorCount
  3. 将OnError事件处理程序添加到执行SQL任务并创建脚本任务。

    2.a此脚本任务应将ErrorCount变量作为ReadWriteVariable

    2.b在脚本定义中,您可以执行以下操作:

    public void Main() {
        Dts.Variables["User::ErrorCount"].Value = int.Parse(Dts.Variables["User::ErrorCount"].Value.ToString()) + 1;
        Dts.TaskResult = (int)ScriptResults.Success;
    }
    
  4. 然后在您的失败优先约束中,您将需要使用以下设置进行设置:

    评估操作:表达和约束

    价值:失败

    表达式: @ [User :: ErrorCount]> 0

    多重约束:逻辑或

  5. 希望这有帮助