Écrire des informations dans le journal des applications

Vous pouvez inclure une tâche de script dans le package Microsoft SQL Server Integration Services (SSIS) pour exécuter une tâche. Par exemple, la tâche peut écrire une collection d’informations sur les variables dans le journal des applications Windows. Vous pouvez créer un package SSIS qui contient une tâche Data Flow. Cette tâche Data Flow comprend une transformation du nombre de lignes. Vous pouvez utiliser une tâche de script pour écrire les données qui ont été remplies par la transformation du nombre de lignes dans le journal des applications Windows.

Cet article explique comment utiliser une tâche de script pour écrire des informations dans le journal des applications Windows.

Version d’origine du produit : SQL Server
Numéro de la base de connaissances d’origine : 906560

Description

Cet exemple suppose que vous avez créé les éléments suivants dans le package SSIS :

  • tâche Data Flow
  • tâche de script
  • connecteur de la tâche Data Flow à la tâche de script.
  • Dans la tâche Data Flow, vous avez créé une transformation du nombre de lignes dans le flux de données.

Lorsque vous exécutez le package, la transformation du nombre de lignes retourne les données du nombre de lignes que vous souhaitez écrire dans le journal des applications Windows.

Configurer la tâche de script

Pour configurer l’exemple de code de tâche de script, procédez comme suit dans le concepteur SSIS :

  1. Lorsque l’onglet Flux de contrôle est actif, cliquez avec le bouton de droite sur la surface de conception, puis sélectionnez Variables. La fenêtre Variables s’affiche sur le volet de gauche.

  2. Dans la fenêtre Variables, sélectionnez Ajouter une variable, puis indiquez le nom de la variable en tant que mycount. Par défaut, le type de données de la nouvelle variable mycount est Int32.

    Notes

    Les noms des variables respectent la casse.

  3. Double-cliquez sur la Tâche Data Flow. La fenêtre active bascule vers l’onglet Data Flow.

  4. Utilisez les propriétés de la transformation du nombre de lignes pour définir la valeur de la propriété VariableName sur mycount.

  5. Sélectionnez l'onglet Flux de contrôle, puis double-cliquez sur la Tâche de script. La boîte de dialogue Éditeur de tâches de script s’affiche.

  6. Dans le volet de gauche, sélectionnez l’élément Script, puis remplacez la valeur de la propriété ReadOnlyVariables par la valeur suivante :

    PackageName,StartTime,ExecutionInstanceGUID,mycount

    Notes

    Les éléments PackageName, StartTime et ExecutionInstanceGUID sont des variables système. Ces variables système sont utilisées pour écrire les informations du package dans le journal des applications Windows.

  7. Dans la boîte de dialogue Éditeur de tâches de script, sélectionnez Modifier le script.

  8. Lorsqu’une nouvelle fenêtre Microsoft Visual Studio pour Applications (VSTA) s’affiche, procédez comme suit :

    1. Assurez-vous que les espaces de noms suivants sont inclus dans votre code avant toute autre déclaration.

      Imports System 
      Imports System.Data
      Imports System.Math
      Imports System.Diagnostics
      Imports Microsoft.SqlServer.Dts.Runtime
      
    2. Remplacez l’exemple de code suivant par le code de la méthodeMain().

      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
      

    Une fois le package exécuté, l’entrée suivante s’affiche dans le journal des applications 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>
    

Références

Méthode EventLog.WriteEntry (System.Diagnostics)

Code d’instrument pour créer des événements EventSource