Schreiben von Informationen in das Anwendungsprotokoll

Sie können einen Skripttask in das SSIS-Paket (Microsoft SQL Server Integration Services) einschließen, um einen Task auszuführen. Der Task kann beispielsweise eine Sammlung von Variableninformationen in das Windows-Anwendungsprotokoll schreiben. Sie können ein SSIS-Paket erstellen, das einen Datenflusstask enthält. Dieser Datenflusstask enthält eine Zeilenanzahltransformation. Sie können einen Skripttask verwenden, um die Daten, die durch die Zeilenanzahltransformation aufgefüllt wurden, in das Windows-Anwendungsprotokoll zu schreiben.

In diesem Artikel wird beschrieben, wie Sie mithilfe eines Skripttasks Informationen in das Windows-Anwendungsprotokoll schreiben.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 906560

BESCHREIBUNG

In diesem Beispiel wird davon ausgegangen, dass Sie die folgenden Elemente im SSIS-Paket erstellt haben:

  • Einen Datenflusstask.
  • Einen Skripttask.
  • Einen Connector vom Datenflusstask zum Skripttask.
  • Im Datenflusstask haben Sie eine Zeilenanzahltransformation im Datenfluss erstellt.

Wenn Sie das Paket ausführen, gibt die Zeilenanzahltransformation die Zeilenanzahldaten zurück, die Sie in das Windows-Anwendungsprotokoll schreiben möchten.

Konfigurieren des Skripttasks

Führen Sie zum Konfigurieren des Skripttaskcode-Beispiels die folgenden Schritte im SSIS-Designer aus:

  1. Wenn die Registerkarte Ablaufsteuerung aktiv ist, klicken Sie mit der rechten Maustaste auf die Entwurfsoberfläche, und wählen Sie dann Variablen aus. Das Fenster Variablen wird im linken Fensterbereich angezeigt.

  2. Wählen Sie im Fenster Variablen die Option Variable hinzufügen aus, und geben Sie dann mycount als Variablennamen an. Standardmäßig ist Int32 der Datentyp der neuen mycount-Variablen.

    Hinweis

    Bei Verweisen auf Variablennamen wird nach Groß-/Kleinschreibung unterschieden.

  3. Doppelklicken Sie auf den Datenflusstask. Die Registerkarte Datenfluss wird zum aktiven Fenster.

  4. Verwenden Sie die Eigenschaften der Zeilenanzahltransformation, um den Wert der Eigenschaft VariableName auf mycount festzulegen.

  5. Wählen Sie die Registerkarte Ablaufsteuerung aus, und doppelklicken Sie dann auf den Skripttask. Das Dialogfeld Skripttask-Editor wird angezeigt.

  6. Wählen Sie im linken Bereich das Element Skript aus, und ändern Sie dann den Wert der Eigenschaft ReadOnlyVariables in den folgenden Wert:

    PackageName,StartTime,ExecutionInstanceGUID,mycount

    Hinweis

    Die Elemente PackageName, StartTime und ExecutionInstanceGUID sind Systemvariablen. Diese Systemvariablen werden verwendet, um die Paketinformationen in das Windows-Anwendungsprotokoll zu schreiben.

  7. Wählen Sie im Dialogfeld Skripttask-Editordie Option Skript bearbeiten aus.

  8. Wenn ein neues Fenster von Microsoft Visual Studio for Applications (VSTA) angezeigt wird, führen Sie die folgenden Schritte aus:

    1. Stellen Sie sicher, dass die folgenden Namespaces vor allen anderen Deklarationen im Code enthalten sind.

      Imports System 
      Imports System.Data
      Imports System.Math
      Imports System.Diagnostics
      Imports Microsoft.SqlServer.Dts.Runtime
      
    2. Ersetzen Sie das folgende Codebeispiel durch den Code in der Main()-Methode.

      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
      

    Nachdem das Paket erfolgreich ausgeführt wurde, wird der folgende Eintrag im Windows-Anwendungsprotokoll angezeigt.

       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>
    

Referenzen

EventLog.WriteEntry-Methode (System.Diagnostics)

Instrumentcode zum Erstellen von EventSource-Ereignissen