Escritura de información en el registro de aplicaciones

Puede incluir una tarea script en el paquete de Microsoft SQL Server Integration Services (SSIS) para que ejecute una tarea. Por ejemplo, la tarea puede escribir una colección de datos de variables en el registro de aplicaciones de Windows. Puede crear un paquete SSIS que contenga una tarea Flujo de datos. Esta tarea Flujo de datos incluye una transformación Recuento de filas. Puede usar una tarea Script para escribir los datos que la transformación Recuento de filas ha rellenado en el registro de aplicaciones de Windows.

En este artículo se describe cómo usar una tarea Script para escribir información en el registro de aplicaciones de Windows.

Versión de producto original: SQL Server
Número de KB original: 906 560

Descripción

En este ejemplo se da por hecho que se han creado los siguientes elementos en el paquete SSIS:

  • Una tarea Flujo de datos
  • Una tarea Script
  • Un conector que une la tarea Flujo de datos y la tarea Script
  • En la tarea Flujo de datos, una transformación Recuento de filas en el flujo de datos

Al ejecutar el paquete, la transformación Recuento de filas devuelve los datos de recuento de filas que desea escribir en el registro de aplicaciones de Windows.

Configurar la tarea Script

Para configurar el código de tarea Script de ejemplo, haga lo siguiente en el diseñador de SSIS:

  1. Con la pestaña Flujo de control activa, haga clic con el botón derecho en la superficie de diseño y seleccione Variables. Se abre la ventana Variables en el panel izquierdo.

  2. En la ventana Variables, seleccione Agregar variable y, a continuación, indique el nombre de variable mycount. El tipo de datos de la nueva variable mycount es Int32 de forma predeterminada.

    Nota

    En las referencias a nombres de variable se distingue mayúsculas de minúsculas.

  3. Haga doble clic en Tarea Flujo de datos. La ventana activa cambia a la pestaña Flujo de datos.

  4. Use las propiedades de la transformación Recuento de filas para establecer el valor de la propiedad VariableName en mycount.

  5. Seleccione la pestaña Flujo de control y, a continuación, haga doble clic en Tarea Script. Se abre el cuadro de diálogo Editor de la tarea Script.

  6. En el panel izquierdo, seleccione el elemento Script y luego cambie el valor de la propiedad ReadOnlyVariables por el siguiente valor:

    PackageName,StartTime,ExecutionInstanceGUID,mycount

    Nota

    Los elementos PackageName, StartTime y ExecutionInstanceGUID son variables del sistema. Estas variables del sistema sirven para escribir la información del paquete en el registro de aplicaciones de Windows.

  7. En el cuadro de diálogo Editor de la tarea Script, seleccione Editar script.

  8. Cuando se abra una nueva ventana de Microsoft Visual Studio for Applications (VSTA), haga lo siguiente:

    1. Asegúrese de que los siguientes espacios de nombres están incluidos en el código antes de cualquier otra declaración.

      Imports System 
      Imports System.Data
      Imports System.Math
      Imports System.Diagnostics
      Imports Microsoft.SqlServer.Dts.Runtime
      
    2. Reemplace el ejemplo de código siguiente por el código del 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)
      End If
      Dim ELog As New EventLog(sLog, sMachine, sSource)
      Dim category As Short = 2
      ' ELog.WriteEntry("Write from third source", 4, 777, 2)
      ELog.WriteEntry(sEventMessage, EventLogEntryType.Information, 777, category)
      '###############################
      Dts.TaskResult = ScriptResults.Success
      

    Cuando el paquete se ejecute correctamente, aparecerá la siguiente entrada en el registro de aplicaciones de Windows.

       Log Name: Application
       Source: RowCountReporting from SSIS
       Date: 12/20/2022 11:21:38 AM
       Event ID: 777
       Task Category: (2)
       Level: Information
       Keywords: Classic
       User: N/A
       Computer: <hostname>
       Description:
       Rows Processed:
       case Rows:0
       =============================================
       The Package: Package
       Started: 12/20/2022 11:21:37 AM
       Current Time:12/20/2022 11:21:38 AM
       =============================================
       Package Run Duration in seconds: 1
       Execution GUID: {9DF22831-E608-47F7-BD62-F9BD3C2F9C77}
       Event Xml:
       <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
       <System>
       <Provider Name="RowCountReporting from SSIS" />
       <EventID Qualifiers="0">777</EventID>
       <Version>0</Version>
       <Level>4</Level>
       <Task>2</Task>
       <Opcode>0</Opcode>
       <Keywords>0x80000000000000</Keywords>
       <TimeCreated SystemTime="2022-12-20T17:21:38.5070621Z" />
       <EventRecordID>122603</EventRecordID>
       <Correlation />
       <Execution ProcessID="41588" ThreadID="0" />
       <Channel>Application</Channel>
       <Computer><hostname>/Computer>
       <Security />
       </System>
       <EventData>
       <Data>Rows Processed:
       case Rows:0
       =============================================
       The Package: Package
       Started: 12/20/2022 11:21:37 AM
       Current Time:12/20/2022 11:21:38 AM
       =============================================
       Package Run Duration in seconds: 1
       Execution GUID: {9DF22831-E608-47F7-BD62-F9BD3C2F9C77}</Data>
       </EventData>
       </Event>
    

Referencias

Método EventLog.WriteEntry (System.Diagnostics)

Instrumentación de código para crear eventos de EventSource