您的位置:首页 > 大数据 > 人工智能

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

2014-09-24 16:27 381 查看

介绍

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

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

约束评估

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

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





图 5

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





图 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 还是执行了.





图 8





图 9

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

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

再次测试 On Success





图 10

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





图 11

On Failure
现在我们测试 On Failure :





图 13

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





图 14

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





图 16

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

Resources: My_First_SSIS_Project_After_Step_7.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: