我正在研究这个SSIS包,我故意在执行sql任务上发出错误来测试失败优先级约束但是它会卡在执行sql任务中,错误是。它应该遵循失败优先级,并在遇到错误时执行下一步。
基本上,执行sql任务的错误是我截断了一个不存在的表...在现实生活中,它可能是因为拼写错误而发生的。
我已经将delayvalidation设置为true但它仍然无效。
http://i69.photobucket.com/albums/i47/boxingpics/Untitled-2.jpg
我该如何解决这个问题?谢谢!
答案 0 :(得分:1)
在Precedence Constraint Editor对话框中(右键单击优先约束并选择“Edit ...”),选择“Logical OR。一个约束必须计算为True”。
Working with Precedence Constraints in SSIS:
逻辑AND:指向受约束的可执行文件的所有优先约束必须求值为true才能运行该可执行文件。这是默认选项。如果选中,则箭头为实线。
逻辑OR:只有一个指向受约束可执行文件的优先约束必须求值为true才能运行该可执行文件。如果选择此选项,则箭头会点缀。
答案 1 :(得分:0)
我遇到了同样的问题,并通过执行以下操作解决了这个问题:
将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;
}
然后在您的失败优先约束中,您将需要使用以下设置进行设置:
评估操作:表达和约束
价值:失败
表达式: @ [User :: ErrorCount]> 0 强>
多重约束:逻辑或
希望这有帮助