Cómo escribir información en el registro de sucesos de aplicación mediante una tarea de secuencia de comandos en un paquete de SQL Server 2005 Integration Services


Resumen


Cuando utiliza Microsoft SQL Server Business Intelligence Development Studio para crear un paquete de Microsoft SQL Server 2005 Integration Services (SSIS), puede incluir una tarea de secuencia de comandos en el paquete SSIS para ejecutar una tarea.

Por ejemplo, la tarea puede escribir una colección de información variable para el registro de sucesos de aplicación para Windows. Puede crear un paquete SSIS que contiene una tarea de flujo de datos. Esta tarea de flujo de datos incluye una transformación recuento de filas. Puede utilizar una tarea de secuencia de comandos para escribir los datos que se llenó por la transformación recuento de filas para el registro de sucesos de aplicación para Windows.

Este artículo describe cómo utilizar una tarea de secuencia de comandos para escribir información en el registro de sucesos de aplicación para Windows.

Más información


En este ejemplo se supone que ha creado los siguientes elementos en el paquete SSIS:
  • Una tarea de flujo de datos
  • Una tarea de secuencia de comandos
  • Un conector de la tarea flujo de datos a la tarea de secuencia de comandos
  • En la tarea flujo de datos, crea una transformación recuento de filas en el flujo de datos.
Cuando se ejecuta el paquete, la transformación recuento de filas devuelve los datos de número de fila que se desea escribir en el registro de sucesos de aplicación para Windows.

Para ello, siga estos pasos en SQL Server Business Intelligence Development Studio:
  1. Cuando está activa la ficha Flujo de Control , haga clic derecho en la superficie de diseño y, a continuación, haga clic en Variables. Aparecerá la ventana de Variables en el panel izquierdo.
  2. En la ventana de Variables , haga clic en Agregar variable para agregar una variable a la que se denomina mycount. De forma predeterminada, el tipo de datos de la nueva variable mycount es Int32.

    Nota: Las referencias a nombres de variables distinguen mayúsculas de minúsculas.
  3. Haga doble clic en la tarea Flujo de datos . La
    Aparecerá la ficha Flujo de datos .
  4. Haga doble clic en la transformación Recuento de filas . Aparecerá el cuadro de diálogo del Editor avanzado .
  5. Establezca el valor de la propiedad VariableName para
    mycount.
  6. Haga clic en la ficha Flujo de Control y, a continuación, haga doble clic en la Tarea secuencia de comandos. Aparecerá el cuadro de diálogo Editor de la tarea de secuencia de comandos .
  7. Haga clic en el elemento de secuencia de comandos en el panel izquierdo y, a continuación, cambie el valor de la propiedad ReadOnlyVariables en el valor siguiente:
    PackageName,StartTime,ExecutionInstanceGUID,mycount
    Nota: Los elementos PackageName, StartTime y ExecutionInstanceGUID son variables del sistema. Estas variables de sistema se utilizan para escribir la información del paquete en el registro de sucesos de aplicación para Windows.
  8. es
    Editor de la tarea de secuencia de comandos de diálogo cuadro, haga clic en Diseñar secuencia de comandos.
  9. Asegúrese de que los espacios de nombres siguientes están incluidos en el código antes que cualquier otra declaración:
    Imports System
    Imports System.Data
    Imports System.Math
    Imports System.Diagnostics
    Imports Microsoft.SqlServer.Dts.Runtime
  10. Cuando aparece una nueva ventana de Microsoft Visual Studio para aplicaciones , reemplace el siguiente ejemplo de código con el código en el método Main() .
    Dim varMyCount As Variable = Dts.Variables("mycount") '
    Dim varPackageName As Variable = Dts.Variables("PackageName")
    Dim varStartTime As Variable = Dts.Variables("StartTime")
    Dim varInstanceID As Variable = Dts.Variables("ExecutionInstanceGUID")
    Dim PackageDuration As Long

    '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ' Event log needs
    '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Dim sSource As String
    Dim sLog As String
    Dim sEventMessage As String
    Dim sMachine As String
    '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    PackageDuration = DateDiff("s", varStartTime.Value, Now())

    sSource = "RowCountReporting from SSIS"

    ' We need the message posted to the Application event log.

    sLog = "Application"
    sEventMessage = "Rows Processed: " & Chr(10) _
    & " case Rows:" + varMyCount.Value().ToString + Chr(10) _
    & "=============================================" & Chr(10) _
    & "The Package: " + varPackageName.Value().ToString _
    & Chr(10) _
    & "Started: " & varStartTime.Value().ToString _
    & Chr(10) _
    & "Current Time:" & System.DateTime.Now _
    & Chr(10) _
    & "=============================================" _
    & Chr(10) _
    & "Package Run Duration in seconds: " & PackageDuration _
    & Chr(10) _
    & "Execution GUID: " & varInstanceID.Value().ToString
    sMachine = "."

    If Not EventLog.SourceExists(sSource, sMachine) Then
    EventLog.CreateEventSource(sSource, sLog, sMachine)
    End If

    Dim ELog As New EventLog(sLog, sMachine, sSource)

    ELog.WriteEntry(sEventMessage, EventLogEntryType.Information, 777, 2)

    '###############################
    Dts.TaskResult = Dts.Results.Success
  11. Cierre la ventana de Microsoft Visual Studio para aplicaciones .
  12. es
    Editor de la tarea de secuencia de comandos de diálogo cuadro, haga clic en Aceptar.
  13. Presione F5 para ejecutar el paquete.
Cuando el paquete se ejecuta correctamente, aparece información similar a la siguiente en el registro de sucesos de aplicación para Windows:

Referencias


Para obtener más información, consulte los siguientes temas en libros en pantalla de Microsoft SQL Server 2005:
  • Tarea secuencia de comandos
  • Programación de la tarea secuencia de comandos
  • Cómo: establecer propiedades de la tarea mediante un Editor de la tarea
Para obtener más información acerca de cómo escribir en el registro de sucesos de aplicación para Windows utilizando Microsoft Visual Basic, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):