Compartir a través de


Comparar la tarea Script y el componente de script

La tarea Script, que está disponible en la ventana Flujo de control del diseñador de Integration Services, y el componente de script, que está disponible en la ventana Flujo de datos, tienen fines muy diferentes en un paquete de Integration Services. La tarea es una herramienta de flujo de control de uso general, en tanto que el componente actúa como un origen, transformación o destino en el flujo de datos. A pesar de sus fines diferentes, sin embargo, la tarea Script y el componente de script tienen algunas similitudes en las herramientas de codificación que utilizan y los objetos del paquete que ponen a disposición del desarrollador de software. Comprender sus similitudes y diferencias puede ayudarle a utilizar la tarea y el componente de manera más eficaz.

Similitudes entre la tarea Script y el componente de script

La tarea Script y el componente de script comparten las siguientes características comunes.

Característica Descripción
Dos modos en tiempo de diseño Tanto en la tarea como en el componente, se comienza especificando las propiedades en el editor y, a continuación, se cambia al entorno de desarrollo para escribir código.
Microsoft Visual Studio Tools for Applications (VSTA) Tanto la tarea como el componente usan el mismo IDE de VSTA y admiten código escrito en Microsoft Visual Basic o Microsoft Visual C#.
Scripts precompilados A partir de SQL Server 2008 Integration Services (SSIS), todos los scripts están precompilados. En versiones anteriores, podía especificar si se precompilaban o no los scripts.

El script se precompila en código binario, lo que permite una ejecución más rápida, pero aumenta el tamaño del paquete.
Depuración La tarea y el componente admiten ambos puntos de interrupción y recorridos paso a paso por el código mientras se depura en el entorno de diseño. Para obtener más información, vea Codificación y depuración de la tarea Script y [Codificación y depuración del componente de script](.. /extend-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.

Diferencias entre la tarea Script y el componente de script

La tarea Script y el componente de script tienen las siguientes diferencias notables.

Característica Tarea Script Componente de script
Flujo de control/flujo de datos La tarea Script se configura en la pestaña Flujo de control del diseñador y se ejecuta fuera del flujo de datos del paquete. El componente de script se configura en la página Flujo de datos del diseñador y representa un origen, transformación o destino en la tarea Flujo de datos.
Propósito Una tarea Script puede realizar prácticamente cualquier tarea de uso general. Con el componente de script, debe especificar si desea crear un origen, transformación o destino.
Ejecución Una tarea Script ejecuta código personalizado en algún punto del flujo de trabajo del paquete. Solo se ejecuta una vez, a menos que se incluya en un contenedor de bucles o en un controlador de eventos. Un componente de Script también se ejecuta una vez, pero normalmente ejecuta su rutina de procesamiento principal una vez para cada fila de datos del flujo de datos.
Editor El Editor de la tarea Script tiene tres páginas: General, Script y Expresiones. Solo las ReadOnlyVariables propiedades y ReadWriteVariables, y ScriptLanguage afectan directamente al código que puede escribir. El Editor de transformación Script tiene hasta cuatro páginas: Columnas de entrada, Entradas y salidas, Script y Administradores de conexión. Los metadatos y propiedades que configura en cada una de estas páginas determinan los miembros de las clases base que se generan automáticamente para su uso en el código.
Interacción con el paquete En el código escrito para una tarea Script, utiliza la propiedad Dts para tener acceso a otras características del paquete. La propiedad Dts es miembro de la clase ScriptMain. En el código del componente de script, utiliza propiedades de descriptor de acceso con tipo para tener acceso a ciertas características del paquete como variables y administradores de conexión.

El método PreExecute únicamente puede tener acceso a variables de solo lectura. El método PostExecute puede tener acceso a variables de solo lectura y de lectura/escritura.

Para obtener más información sobre estos métodos, vea [Codificación y depuración del componente de script](.. /extend-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.
Utilizar variables La tarea Script usa la Variables propiedad del Dts objeto para tener acceso a variables que están disponibles a través de las propiedades y ReadWriteVariables de ReadOnlyVariables la tarea. Por ejemplo:

[VB]

Dim myVar as String myVar = Dts.Variables("MyStringVariable").Value.ToString



[C#]

string myVar; myVar = Dts.Variables["MyStringVariable"].Value.ToString();
El componente de script usa propiedades de descriptor de acceso con tipo de la clase base generada automáticamente, creadas a partir de las propiedades ReadOnlyVariables y ReadWriteVariables del componente. Por ejemplo:

[VB]

Dim myVar as String myVar = Me.Variables.MyStringVariable



[C#]

string myVar; myVar = this.Variables.MyStringVariable;
Utilizar conexiones La tarea Script utiliza la propiedad Connections del objeto Dts para tener acceso a los administradores de conexión definidos en el paquete. Por ejemplo:

[VB]

Dim myFlatFileConnection As String myFlatFileConnection = _ DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _ String)



[C#]

string myFlatFileConnection; myFlatFileConnection = (Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
El componente de script utiliza propiedades de descriptor de acceso con tipo de la clase base generada automáticamente, creadas a partir de la lista de administradores de conexión escrita por el usuario en la página Administradores de conexión del editor. Por ejemplo:

[VB]

Dim connMgr As IDTSConnectionManager100 connMgr = Me.Connections.MyADONETConnection



[C#]

IDTSConnectionManager100 connMgr; connMgr = this.Connections.MyADONETConnection;
Provocar eventos La tarea Script utiliza la propiedad Events del objeto Dts para provocar eventos. Por ejemplo:

[VB]

Dts.Events.FireError(0, "Event Snippet", _ ex.Message & ControlChars.CrLf & ex.StackTrace, _ "", 0)



[C#]

Dts.Events.FireError(0, "Event Snippet", ex.Message + "\r" + ex.StackTrace, "", 0);
El componente de script provoca errores, advertencias y mensajes informativos utilizando los métodos de la interfaz IDTSComponentMetaData100 que devuelve la propiedad ComponentMetaData. Por ejemplo:

[VB]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Registro La tarea Script usa el Log método del Dts objeto para registrar información en proveedores de registro habilitados. Por ejemplo:

[VB]

Dim bt(0) As Byte Dts.Log("Test Log Event", _ 0, _ bt)



[C#]

byte[] bt = new byte[0]; Dts.Log("Test Log Event", 0, bt);
El componente de script utiliza el método Log de la clase base generada automáticamente para registrar información en los proveedores de registro habilitados. Por ejemplo:

[VB]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)



[C#]

byte[] bt = new byte[0]; this.Log("Test Log Event", 0, bt);
Devolver resultados La tarea Script usa la TaskResult propiedad y la propiedad opcional ExecutionValue del Dts objeto para notificar al tiempo de ejecución sus resultados. El componente de script se ejecuta como parte de la tarea Flujo de datos y no notifica resultados mediante estas propiedades.

Consulte también

Extender el paquete con la tarea Script
Ampliar el flujo de datos con el componente de script
Uso de una tarea script en SQL Server Integration Services SSIS para conectarse a un servicio web