介绍

前一个章节我们对SSIS的优先约束做了初步了解,并且实验了MaxConcurrentExecutables 包属性的设置.

本文将测试“On Success”, “On Completion”, 和“On Failure”几种类型的优先约束.

约束评估

On Success

在此就不重复了,请看上篇文章

On Completion

右击优先约束,会显示配置选项:

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 5

点击 Completion, 优先约束的先会由绿色变为黑色:

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 6

当配置选项改为“On Completion”之后,只要Script Task 1 执行完毕,不管是成功还是失败. 条件约束都会执行 Script Task2 :

我们来测试下执行失败情况.

首先,我们来要制作一个错误.打开 Script Task 1 然后点“Edit Script” 按钮.  我们通过 Message Boxes的返回值来控制执行的成功或者失败.以下是VB代码:

Public Sub Main()
Dim sTaskName As String = Dts.Variables("TaskName").Value.ToString
Dim iResponse As Integer = MsgBox("Succeed " & _ sTaskName & "?", MsgBoxStyle.YesNo, sTaskName) If iResponse = MsgBoxResult.Yes Then
Dts.TaskResult = ScriptResults.Success
Else
Dts.TaskResult = ScriptResults.Failure
End If
End Sub

C# 代码(请叫我雷锋)

public void Main()
{
// TODO: Add your code here
string sTaskName = Dts.Variables["TaskName"].Value.ToString();
DialogResult iResponse = MessageBox.Show("Succeed" + sTaskName + "?", sTaskName, MessageBoxButtons.YesNo); if (iResponse == DialogResult.Yes) Dts.TaskResult = (int)ScriptResults.Success;
else
Dts.TaskResult = (int)ScriptResults.Failure;
}

Script Task 1执行后弹出的消息框我们选No,这时候任务一就执行’失败’,但是Script Task 2 还是执行了.

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 8

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 9

如果你一直跟着我的文章一步步坐过来,有可能你执行以后看到的类似 Script Task1 的执行信息而看不到图9的界面.之所以这样是因为我们之前直接拷贝了  Script Task 1 然后改名为Script Task 2. 有时候就会发生Task2 执行被拷贝的Task1的情况 . 虽然很少碰到,但是还会发生(这尼玛不是坑爹么..绝对是Bug) . 要解决这个问题.打开Script Task2 随意编辑一下在保存. SSDT就会’刷新’ . 然后执行就正常了. (我是直接关掉SSDT再开项目 o(╯□╰)o) .

现在让我们从新设置回“On Success”看看效果

再次测试 On Success

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 10

消息框我们选择”No” 按钮, Script Task2 不会继续执行.

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 11

On Failure

现在我们测试 On Failure :

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 13

执行包以后,消息框我们选择’NO’按钮. Script Task 2会继续执行. :

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 14

当我们选择 Yes的时候 Script Task2 就不执行了.

[译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级-LMLPHP

图 16

原文地址: http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/91651/

Resources: My_First_SSIS_Project_After_Step_7.zip
04-29 03:28