Precedence Constraints
Precedence constraints are package components that direct tasks to execute in a given order. In
fact, precedence constraints are the connectors that not only link tasks together but also define
the workflow of your SSIS package. A constraint controls the execution of the two linked tasks by
executing the destination task based upon the final state of the prior task and business rules that are
defined using special expressions. The expression language embedded in SSIS essentially replaces
the need to control workflow using script-based methodologies that enable and disable tasks, as
was used in the DTS legacy solution. With expressions, you can direct the workflow of your SSIS
package based on all manner of given conditions. You’ll look at many examples of using these
constraints throughout this book.
To set up a precedence constraint between two tasks, you must set the constraint value; optionally,
you can set an expression. The following sections provide a brief overview of the differences
between the two.
Constraint values define how the package will react when the prior task of two linked tasks
completes an execution. The options define whether the destination task of two linked tasks should
execute based solely on how the prior task completes. Three constraint values are possible:
➤➤ Success: A task that’s chained to another task with this constraint will execute only if the
prior task completes successfully. These precedence constraints are colored green.
➤➤ Completion: A task that’s chained to another task with this constraint will execute if the
prior task completes, whether or not the prior task succeeds or fails. These precedence
constraints are colored blue.
➤➤ Failure: A task that’s chained to another task with this constraint will execute only if the
prior task fails to complete. This type of constraint is usually used to notify an operator of a
failed event. These precedence constraints are colored red.
You can also conditionally tie tasks together by writing logic on a precedence constraint. This is
done by placing an SSIS expression language (resembles C#) on the precedence constraint. For
example, you might specify that a task should run only at the end of each month. To do this, you
would add an expression that evaluated the runtime of the package to determine if the next step
should be run. Much more about writing expressions can be found in Chapter 5.
Containers
Containers are core units in the SSIS architecture for grouping tasks together logically into units
of work. Besides providing visual consistency, containers enable you to define variables and event
handlers (these are discussed in a moment) within the scope of the container, instead of the package.
There are four types of containers in SSIS:
➤➤ Task Host Container: Not a visible element that you’ll find in the Toolbox, but rather an
abstract concept like an interface.
➤➤ Sequence Container: Allows you to group tasks into logical subject areas. Within the
development environment, you can then collapse or expand this container for usability.
➤➤ For Loop Container: Loops through a series of tasks until a condition is met.
➤➤ Foreach Loop Container: Loops through a series of files or records in a data set, and then
executes the tasks in the container for each record in the collection.