1.3 优先约束
优先约束负责安排任务以指定的顺序来执行。它们根据给定的条件来安排SSIS程序包的工作流。在SQL Server 2005集成服务中的工作流条件分支方面,优先约束得到了极大的增强。
1.3.1 约束值
用户在SQL Server 2000中可能比较熟悉的优先约束就是约束值了。约束值具有以下三种类型:
● Success(成功):如果某个任务被链接到另外一个具有该约束值的任务,仅当先前的任务执行成功时,后续的任务才能执行。
● Completion(结束):如果某个任务被链接到另外一个具有该约束值的任务,仅当先前的任务结束时,后续的任务才能执行。至于先前的任务执行成功或失败并不重要。
● Failure(失败):如果某个任务被链接到另外一个具有该约束值的任务,仅当先前的任务执行失败时,后续的任务才能执行。这种类型的约束值通常用于向操作员通知某个失败的事件,或者是向某个异常队列写入错误记录。
1.3.2 条件表达式
在SSIS 2005中针对优先约束的最佳改进是它能够根据所满足的特定条件来动态遵循工作流路径。这些条件使用新的条件表达式来驱动工作流。表达式(expression)允许在执行任务和遵循工作流路径之前来确定是否满足特定的条件。约束(constraint)则只判定先前的任务是否执行成功或失败以确定下一步是否执行。SSIS程序员可以通过使用求值运算符来设置条件。一旦创建了一个优先约束,则将EvalOp属性设置为以下任意选项之一:
● Constraint:这是默认设置并指定在工作流中只遵循约束。
● Expression:该选项允许编写一个表达式(非常类似于VB.NET)来根据所指定的条件控制工作流。
● ExpressionAndConstraint:指定在执行任务前必须同时满足表达式和约束。
● ExpressionOrConstraint:指定在执行任务前应当满足表达式或约束。
图1-6显示了一个示例工作流。该程序包首先使用File System任务来复制文件,然后如果该任务执行成功同时满足表达式中的特定准则,则将使用Data Flow任务来转换文件。如果第一步执行失败,则将使用Send Mail任务向用户发送一条消息来进行通知。在图中可以看到在Data Flow任务之上具有一个很小的fx图标。这是以图形化方式向程序员表明,只有当表达式满足而且先前的步骤成功结束后才会执行该任务。在运行Data Flow任务之前,表达式可以检查任何内容,例如查看校验和来进行判断。