Gravar informações no log do aplicativo

Você pode incluir uma Tarefa de Script no pacote do SSIS (Microsoft SQL Server Integration Services) para executar uma tarefa. Por exemplo, a tarefa pode gravar uma coleção de informações variáveis no log de aplicativos do Windows. Você pode criar um pacote SSIS que contém uma Tarefa de Fluxo de Dados. Essa Tarefa de Fluxo de Dados inclui uma transformação Contagem de Linhas. Você pode usar uma Tarefa de Script para gravar os dados que foram preenchidos pela transformação Contagem de Linhas no log de Aplicativos do Windows.

Este artigo descreve como usar uma Tarefa de Script para gravar informações no log de aplicativos do Windows.

Versão original do produto: SQL Server
Número original do KB: 906560

Descrição

Este exemplo pressupõe que você criou os seguintes elementos no pacote SSIS:

  • Uma Tarefa de Fluxo de Dados.
  • Uma Tarefa de Script.
  • Um conector da Tarefa de Fluxo de Dados para a tarefa Script.
  • Na Tarefa de Fluxo de Dados, você criou uma transformação Contagem de Linhas no fluxo de dados.

Quando você executa o pacote, a transformação Contagem de Linhas retorna os dados de contagem de linhas que você deseja gravar no log de aplicativos do Windows.

Configurar a tarefa Script

Para configurar o exemplo de código da Tarefa de Script, siga estas etapas no designer do SSIS:

  1. Enquanto a guia Fluxo de Controle estiver ativa, clique com o botão direito do mouse na superfície de design e selecione Variáveis. A janela Variáveis aparece no painel esquerdo.

  2. Na janela Variáveis, selecione Adicionar variável e forneça o nome da variável como mycount. Por padrão, o tipo de dados da nova variável mycount é Int32.

    Observação

    As referências a nomes de variáveis diferenciam maiúsculas de minúsculas.

  3. Clique duas vezes na Tarefa de Fluxo de Dados. A janela ativa alterna para a guia Fluxo de Dados.

  4. Use as propriedades da transformação Contagem de Linhas para definir o valor da propriedade VariableName como mycount.

  5. Selecione a guia Fluxo de Controle e clique duas vezes na Tarefa de Script. A caixa de diálogo Editor de Tarefas de Script é exibida.

  6. No painel esquerdo, selecione o item Script e altere o valor da propriedade ReadOnlyVariables para o seguinte valor:

    PackageName,StartTime,ExecutionInstanceGUID,mycount

    Observação

    Os itens PackageName, StartTime e ExecutionInstanceGUID são variáveis do sistema. Essas variáveis do sistema são usadas para gravar as informações do pacote no log de aplicativos do Windows.

  7. Na caixa de diálogo Editor de Tarefas de Script, selecione Editar Script.

  8. Quando uma nova janela do VSTA (Microsoft Visual Studio for Applications) for exibida, siga estas etapas:

    1. Verifique se os namespaces a seguir estão incluídos em seu código antes de qualquer outra declaração.

      Imports System 
      Imports System.Data
      Imports System.Math
      Imports System.Diagnostics
      Imports Microsoft.SqlServer.Dts.Runtime
      
    2. Substitua o exemplo de código a seguir pelo código no 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
      

    Depois que o pacote for executado com êxito, a entrada a seguir será exibida no log de aplicativos do 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>
    

Referências

Método EventLog.WriteEntry (System.Diagnostics)

Instrumentar o código para criar eventos EventSource