Comparing the Script Task and the Script Component
The Script task, available in the Control Flow window of the Integration Services designer, and the Script component, available in the Data Flow window, have very different purposes in an Integration Services package. The task is a general-purpose control flow tool, whereas the component serves as a source, transformation, or destination in the data flow. Despite their different purposes, however, the Script task and the Script component have some similarities in the coding tools that they use and the objects in the package that they make available to the developer. Understanding their similarities and differences may help you to use both the task and the component more effectively.
The Script task and the Script component share the following common features.
Two design-time modes
In both the task and the component, you begin by specifying properties in the editor, and then switch to the development environment to write code.
Microsoft Visual Studio Tools for Applications (VSTA)
Both the task and the component use the same VSTA IDE, and support code written in either Microsoft Visual Basic 2008 or Microsoft Visual C# 2008.
In SQL Server 2008 Integration Services (SSIS), all scripts are precompiled. In earlier versions, you could specify whether scripts were precompiled.
The script is precompiled into binary code, permitting faster execution, but at the cost of increased package size.
The Script task and the Script component have the following noteworthy differences.
Control flow / Data flow
The Script task is configured on the Control Flow tab of the designer and runs outside the data flow of the package.
The Script component is configured on the Data Flow page of the designer and represents a source, transformation, or destination in the Data Flow task.
A Script task can accomplish almost any general-purpose task.
You must specify whether you want to create a source, transformation, or destination with the Script component.
A Script task runs custom code at some point in the package workflow. Unless you put it in a loop container or an event handler, it only runs once.
A Script component also runs once, but typically it runs its main processing routine once for each row of data in the data flow.
The Script Task Editor has three pages: General, Script, and Expressions. Only the ReadOnlyVariables and ReadWriteVariables, and ScriptLanguage properties directly affect the code that you can write.
The Script Transformation Editor has up to four pages: Input Columns, Inputs and Outputs, Script, and Connection Managers. The metadata and properties that you configure on each of these pages determines the members of the base classes that are autogenerated for your use in coding.
Interaction with the package
In the code written for a Script task, you use the Dts property to access other features of the package. The Dts property is a member of the ScriptMain class.
In Script component code, you use typed accessor properties to access certain package features such as variables and connection managers.
The PreExecute method can access only read-only variables. The PostExecute method can access both read-only and read/write variables.
For more information about these methods, see Coding and Debugging the Script Component.
The Script task uses the Connections property of the Dts object to access connection managers defined in the package. For example:
The Script component uses typed accessor properties of the autogenerated base class, created from the list of connection managers entered by the user on the Connection Managers page of the editor. For example:
The Script task uses the Events property of the Dts object to raise events. For example:
The Script task uses the Log method of the Dts object to log information to enabled log providers. For example:
The Script component uses the Log method of the autogenerated base class to log information to enabled log providers. For example:
Dim bt(0) As Byte
Me.Log("Test Log Event", _
The Script component runs as a part of the Data Flow task and does not report results using either of these properties.
The Script task supports breakpoints and stepping through code while debugging in the design environment.
When you debug a package that contains multiple Script tasks, the debugger hits breakpoints in only one Script task and will ignore breakpoints in the other Script tasks. If a Script task is part of a Foreach Loop or For Loop container, the debugger ignores breakpoints in the Script task after the first iteration of the loop.
The Script component does not support debugging. For more information, see "Debugging the Script Component" in Coding and Debugging the Script Component.