Scrivere informazioni nel registro applicazioni

È possibile includere un'attività Script nel pacchetto di Microsoft SQL Server Integration Services (SSIS) per eseguire un'attività. Ad esempio, l'attività può scrivere una raccolta di informazioni sulle variabili nel registro applicazioni di Windows. È possibile creare un pacchetto SSIS contenente un'attività Flusso di dati. Questa Flusso di dati attività include una trasformazione Conteggio righe. È possibile usare un'attività Script per scrivere i dati popolati dalla trasformazione Conteggio righe nel registro applicazioni di Windows.

Questo articolo descrive come usare un'attività Script per scrivere informazioni nel registro applicazioni di Windows.

Versione originale del prodotto: SQL Server
Numero KB originale: 906560

Descrizione

In questo esempio si presuppone che siano stati creati gli elementi seguenti nel pacchetto SSIS:

  • Attività Flusso di dati.
  • Attività Script.
  • Connettore dall'attività Flusso di dati all'attività Script.
  • Nell'attività Flusso di dati è stata creata una trasformazione Conteggio righe nel flusso di dati.

Quando si esegue il pacchetto, la trasformazione Conteggio righe restituisce i dati del conteggio delle righe che si desidera scrivere nel registro applicazioni di Windows.

Configurare l'attività Script

Per configurare l'esempio di codice dell'attività Script, seguire questa procedura nella finestra di progettazione SSIS:

  1. Mentre la scheda Flusso di controllo è attiva, fare clic con il pulsante destro del mouse sull'area di progettazione e quindi scegliere Variabili. La finestra Variabili viene visualizzata nel riquadro sinistro.

  2. Nella finestra Variabili selezionare Aggiungi variabile e quindi specificare il nome della variabile come mycount. Per impostazione predefinita, il tipo di dati della nuova variabile mycount è Int32.

    Nota

    I riferimenti ai nomi delle variabili fanno distinzione tra maiuscole e minuscole.

  3. Fare doppio clic sull'attività Flusso di dati. La finestra attiva passa alla scheda Flusso di dati.

  4. Utilizzare le proprietà della trasformazione Conteggio righe per impostare il valore della proprietà VariableNamesu mycount.

  5. Selezionare la scheda Flusso di controllo e quindi fare doppio clic sull'attività Script. Verrà visualizzata la finestra di dialogo Editor attività Script .

  6. Nel riquadro sinistro selezionare l'elemento Script e quindi modificare il valore della proprietà ReadOnlyVariables con il valore seguente:

    PackageName,StartTime,ExecutionInstanceGUID,mycount

    Nota

    Gli elementi PackageName, StartTime ed ExecutionInstanceGUID sono variabili di sistema. Queste variabili di sistema vengono usate per scrivere le informazioni sul pacchetto nel registro applicazioni di Windows.

  7. Nella finestra di dialogo Editor attività Script selezionare Modifica script.

  8. Quando viene visualizzata una nuova finestra di Microsoft Visual Studio, Applications Edition (VSTA), seguire questa procedura:

    1. Assicurarsi che gli spazi dei nomi seguenti siano inclusi nel codice prima di qualsiasi altra dichiarazione.

      Imports System 
      Imports System.Data
      Imports System.Math
      Imports System.Diagnostics
      Imports Microsoft.SqlServer.Dts.Runtime
      
    2. Sostituire l'esempio di codice seguente con il codice nel Main() metodo .

      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
      

    Al termine dell'esecuzione del pacchetto, nel registro applicazioni di Windows viene visualizzata la voce seguente.

       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>
    

Riferimenti

Metodo EventLog.WriteEntry (System.Diagnostics)

Instrumentare il codice per creare eventi EventSource