0

我正在处理这个 SSIS 包,我故意在执行 sql 任务上出错以测试失败优先约束,但它卡在错误所在的执行 sql 任务上。它应该遵循失败优先级,并在遇到错误时执行下一步。

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

我已经将 delayvalidation 设置为 true,但它仍然无法正常工作。

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

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

4

2 回答 2

1

在“优先约束编辑器”对话框中(右键单击优先约束并选择“编辑...”),选择“逻辑或。一个约束必须评估为真”。

在 SSIS 中使用优先约束

逻辑与:指向受约束的可执行文件的所有优先约束必须评估为真才能使该可执行文件运行。这是默认选项。如果它被选中,箭头是实心的。

逻辑或:只有一个指向受约束的可执行文件的优先约束必须评估为真才能使该可执行文件运行。如果选择此选项,则箭头为虚线。

于 2012-08-29T20:05:33.917 回答
0

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

  1. 添加一个包级变量,类型为 Int 的 ErrorCount
  2. 将 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;
    }
    
  3. 然后在您的失败优先约束中,您将需要使用以下设置进行设置:

    求值操作:表达式和约束

    价值:失败

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

    多重约束:逻辑或

希望这会有所帮助

于 2012-08-29T20:07:21.603 回答