Comparteix a través de


Comparar la tarea Script y el componente de script

Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory

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, consulte Codificar y depurar la tarea Script y Codificar y depurar el componente de script.

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 propiedades ReadOnlyVariables, 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 de una tarea Script, debe usar la propiedad DTS para obtener 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 obtener acceso a variables de solo lectura. El método PostExecute puede obtener acceso a variables de solo lectura y de lectura/escritura.

Para obtener más información acerca de estos métodos, consulte Codificar y depurar el componente de script.
Utilizar variables La tarea Script usa la propiedad Variables del objeto DTS para acceder a variables disponibles mediante las propiedades ReadOnlyVariables y ReadWriteVariables de la tarea. Por ejemplo:

[Visual Basic]

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:

[Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#]

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

[Visual Basic]

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:

[Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#]

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

[Visual Basic]

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:

[Visual Basic]

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

[Visual Basic]

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:

[Visual Basic]

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 propiedad TaskResult y la propiedad opcional ExecutionValue del objeto DTS para notificar sus resultados al entorno de ejecución. 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