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:
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.
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.
Clique duas vezes na Tarefa de Fluxo de Dados. A janela ativa alterna para a guia Fluxo de Dados.
Use as propriedades da transformação Contagem de Linhas para definir o valor da propriedade VariableName como mycount.
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.
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.
Na caixa de diálogo Editor de Tarefas de Script, selecione Editar Script.
Quando uma nova janela do VSTA (Microsoft Visual Studio for Applications) for exibida, siga estas etapas:
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
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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários