Log do SSIS (Integration Services)

O SQL Server Integration Services inclui provedores de log que você pode usar para implementar log em pacotes, contêineres e tarefas. Com o log, você pode capturar informações de tempo de execução sobre um pacote, que o ajudem a auditar e solucionar problemas de um pacote sempre que ele for executado. Por exemplo, um log pode capturar o nome do operador que executou o pacote e a hora em que o pacote começou e foi concluído.

Você pode configurar o escopo de log que ocorre durante a execução de um pacote no servidor do Integration Services. Para obter mais informações, consulte Habilitar o log para a execução do pacote no servidor SSIS.

Você também pode incluir o log ao executar um pacote por meio do utilitário de prompt de comando dtexec. Para obter mais informações sobre os argumentos do prompt de comando que oferecem suporte para registros, consulte Utilitário dtexec.

Configurar o log no SQL Server Data Tools

Logs são associados a pacotes e são configurados no nível de pacote. Cada tarefa ou contêiner em um pacote pode registrar informações em qualquer log de pacote. As tarefas e os contêineres em um pacote podem ser habilitados para registro mesmo se o próprio pacote não for habilitado para isso. Por exemplo, você pode habilitar o registro em uma tarefa Executar SQL sem habilitar o registro no pacote pai. Um pacote, contêiner ou tarefa pode gravar em vários logs. Você só pode habilitar o registro no pacote ou optar por habilitar o registro em qualquer tarefa ou contêiner individual que o pacote inclua.

Ao adicionar o log a um pacote, você escolhe o provedor de log e o local do log. O provedor de log especifica o formato para obter os dados de log: por exemplo, um banco de dados do SQL Server ou arquivo de texto.

O Integration Services inclui os seguintes provedores de log:

  • O provedor de log Arquivo de texto que grava entradas de log em arquivos de texto de ASCII em formato CSV (valores separados por vírgula). A extensão de nome de arquivo padrão deste provedor é .log.

  • O provedor de log SQL Server Profiler, que grava rastreamentos que você pode exibir usando o SQL Server Profiler. A extensão de nome de arquivo padrão deste provedor é .trc.

    ObservaçãoObservação

    Não é possível usar o provedor de log SQL Server Profiler em um pacote executado no modo de 64 bits.

  • O provedor de log SQL Server, que grava entradas de log na tabela sysssislog em um banco de dados SQL Server.

  • O provedor de log de Eventos do Windows, que grava entradas no log de Aplicativo do log de Eventos do Windows no computador local.

  • O provedor de log Arquivo XML, que grava arquivos de log em um arquivo XML. A extensão de nome de arquivo padrão deste provedor é .xml.

Se você adicionar um provedor de log a um pacote ou configurar o log programaticamente, poderá usar um ProgID ou ClassID para identificar o provedor de log em vez de usar os nomes que o Designer SSIS exibe na caixa de diálogo Configurar Logs de SSIS.

A tabela a seguir lista o ProgID e o ClassID dos provedores de log incluídos pelo Integration Services, e o local dos logs nos quais os provedores de log gravam.

Provedor de log

ProgID

ClassID

Local

Arquivo de texto

DTS.LogProviderTextFile

{0A039101-ACC1-4E06-943F-279948323883}

O gerenciador de conexões de arquivos usado pelo provedor de log especifica o caminho do arquivo de texto.

SQL Server Profiler

DTS.LogProviderSQLProfiler

{E93F6300-AE0C-4916-A7BF-A8D0CE12C77A}

O gerenciador de conexões de arquivos que o provedor de registro usa especifica o caminho usado pelo SQL Server Profiler.

SQL Server

DTS.LogProviderSQLServer

{94150B25-6AEB-4C0D-996D-D37D1C4FDEDA}

O gerenciador de conexões do OLE DB usado pelo provedor de registro especifica o banco de dados do SQL Server que contém a tabela sysssislog com as entradas do registro.

Log de eventos do Windows

DTS.LogProviderEventLog

{071CC8EB-C343-4CFF-8D58-564B92FCA3CF}

O log do Aplicativo no recurso Visualizador de Eventos do Windows contém as informações de registro do Integration Services.

Arquivo XML

DTS.LogProviderXMLFile

{440945A4-2A22-4F19-B577-EAF5FDDC5F7A}

O gerenciador de conexões de arquivos usado pelo provedor de registro especifica o caminho do arquivo XML.

Você também pode criar provedores de log personalizados. Para obter mais informações, consulte Criando um provedor de log personalizado.

Os provedores de log em um pacote são membros da coleção de provedores de log do pacote. Quando você cria um pacote e implementa o log usando o Designer SSIS, pode ver uma lista dos membros da coleção nas pastas Provedor de Log da guia Explorador de Pacotes do Designer SSIS.

Você pode configurar um provedor de log fornecendo um nome e uma descrição para ele e especificando o gerenciador de conexões que ele usa. O provedor de log SQL Server usa um gerenciador de conexões OLE DB. Os provedores de log Arquivo de texto, SQL Server Profilere Arquivo XML usam gerenciadores de conexões de Arquivo. O provedor de log de Eventos do Windows não usa um gerenciador de conexões, pois grava diretamente no log de Eventos do Windows. Para obter mais informações, consulte Gerenciador de conexões OLE DB e Gerenciador de conexões de arquivos.

Personalização do log

Para personalizar o registro de um evento ou mensagem personalizada, o Integration Services fornece um esquema de informações com logs comuns a ser incluído em entradas de log. O esquema de log do Integration Services define as informações que podem ser registradas. Você pode selecionar elementos do esquema de log para cada entrada de log.

Um pacote e seus contêineres e tarefas não precisam registrar as mesmas informações; e as tarefas dentro do mesmo pacote ou contêiner podem registrar informações diferentes. Por exemplo, um pacote pode registrar informações do operador quando for iniciado, uma tarefa pode registrar a origem da falha da tarefa e outra tarefa pode registrar informações quando ocorrerem erros. Se um pacote e seus contêineres e tarefas usarem vários logs, as mesmas informações serão gravadas em todos os logs.

Você pode selecionar um nível de registro que se adapte às suas necessidades especificando os eventos e as informações a serem registrados para cada evento. Você pode achar que alguns eventos fornecem informações mais úteis que outros. Por exemplo, você talvez queira registrar apenas os nomes de computador e operador para o evento PreExecute, mas todas as informações disponíveis para o evento Error.

Para evitar que arquivos de log usem grandes quantidades de espaço em disco ou para evitar o registro excessivo, que pode degradar o desempenho, limite o registro selecionando eventos específicos e itens de informações a serem registrados. Por exemplo, você pode configurar um log para capturar só a data e o nome do computador para cada erro.

No Designer SSIS, você define as opções de log usando a caixa de diálogo Configurar Logs de SSIS.

Esquema de log

A tabela a seguir descreve os elementos no esquema de log.

Elemento

Descrição

Computer

O nome do computador no qual o evento de log ocorreu.

Operador

A identidade do usuário que iniciou o pacote.

SourceName

O nome do contêiner ou tarefa no qual o evento de log ocorreu.

SourceID

O identificador exclusivo do pacote; o contêiner Loop For, Loop Foreach ou Sequência ou a tarefa na qual o evento de log ocorreu.

ExecutionID

O GUID da instância de execução do pacote.

ObservaçãoObservação

A execução de um pacote simples pode criar entradas de log com valores diferentes para o elemento ExecutionID. Por exemplo, quando você executa um pacote no SQL Server Data Tools, a fase de validação talvez crie entradas de log com um elemento ExecutionID que corresponde ao SQL Server Data Tools. No entanto, a fase de execução talvez crie entradas de log com um elemento ExecutionID correspondente a dtshost.exe. Para obter outro exemplo, quando você executa um pacote que contém tarefas Executar Pacote, cada uma dessas tarefas executa um pacote filho. Esses pacotes filho podem criar entradas de log com um elemento ExecutionID diferente do das entradas de log criadas pelo pacote pai.

MessageText

Uma mensagem associada à entrada de log.

DataBytes

Uma matriz de bytes específica para a entrada de log. O significado deste campo varia de acordo com a entrada de log.

A tabela a seguir descreve três elementos adicionais no esquema de log que não estão disponíveis na guia Detalhes da caixa de diálogo Configurar Logs de SSIS.

Elemento

Descrição

StartTime

A hora em que o contêiner ou tarefa começa a ser executado.

EndTime

A hora em que a execução do contêiner ou tarefa para.

DataCode

Um valor inteiro opcional que geralmente contém um valor da enumeração DTSExecResult que indica o resultado da execução do contêiner ou da tarefa:

  • 0 - Êxito

  • 1 - Falha

  • 2 - Concluído

  • 3 - Cancelado

Entradas de log

O Integration Services dá suporte a entradas de log em eventos predefinidos e fornece entradas de log personalizadas para muitos objetos do Integration Services. A caixa de diálogo Configurar Logs de SSIS no Designer SSIS lista esses eventos e entradas de log personalizadas.

A tabela a seguir descreve os eventos predefinidos que podem ser habilitados a gravar entradas de log quando eventos de tempo de execução ocorrem. Essas entradas de log se aplicam a executáveis, ao pacote e às tarefas e contêineres que o pacote inclui. O nome da entrada de log é igual ao nome do evento de tempo de execução que foi gerado e fez com que a entrada de log fosse gravada.

Eventos

Descrição

OnError

Grava uma entrada de log quando ocorre um erro.

OnExecStatusChanged

Grava uma entrada no log quando uma tarefa (não um contêiner) é suspenso ou retomado durante a depuração.

OnInformation

Grava uma entrada de log durante a validação e execução de um executável para relatar informações.

OnPostExecute

Grava uma entrada de log imediatamente depois que o executável termina de ser executado.

OnPostValidate

Grava uma entrada de log quando a validação do executável termina.

OnPreExecute

Grava uma entrada de log imediatamente antes da execução do executável.

OnPreValidate

Grava uma entrada de log quando a validação do executável inicia.

OnProgress

Grava uma entrada de log quando o progresso mensurável é feito pelo executável.

OnQueryCancel

Grava uma entrada de log em qualquer ligação no processamento de tarefa no qual é possível cancelar a execução.

OnTaskFailed

Grava uma entrada de log quando uma tarefa falha.

OnVariableValueChanged

Grava uma entrada de log quando o valor de uma variável é alterado.

OnWarning

Grava uma entrada de log quando ocorre um aviso.

PipelineComponentTime

Para cada componente de fluxo de dados, grava uma entrada de log para cada fase de validação e execução. A entrada de log especifica o tempo de processamento de cada fase.

Diagnostic

Grava uma entrada de log que fornece informações de diagnóstico.

Por exemplo, você pode registrar uma mensagem antes e depois de cada chamada para um provedor de dados externo. Para obter mais informações, consulte Solucionando problemas de ferramentas para execução de pacotes.

O pacote e muitas tarefas têm entradas de log personalizadas que podem ser habilitadas para registro. Por exemplo, a tarefa Enviar Email fornece a entrada de log personalizada SendMailTaskBegin, que registra informações quando a tarefa Enviar Email começa a ser executada, mas antes de a tarefa enviar uma mensagem de email. Para obter mais informações, consulte Mensagens personalizadas para log.

Diferenciando cópias de pacotes

Os dados de log incluem o nome e o GUID do pacote ao qual as entradas de log pertencem. Se você criar um novo pacote copiando um pacote existente, o nome e o GUID do pacote existente também serão copiados. Como resultado, você pode ter dois pacotes com o mesmo GUID e nome, dificultando a diferenciação entre eles nos dados de log.

Para eliminar essa ambiguidade, você deve atualizar o nome e o GUID dos novos pacotes. No SSDT (SQL Server Data Tools), você pode gerar o GUID novamente na propriedade ID e atualizar o valor da propriedade Name na janela Propriedades. Você também pode alterar o GUID e o nome programaticamente ou usando o prompt de comando dtutil . Para obter mais informações, consulte Definir as propriedades do pacote e Utilitário dtutil.

Opções de log pai

Geralmente, as opções de log de tarefas e os contêineres Loop For, Loop Foreach e Sequência correspondem às opções do pacote ou de um contêiner pai. Nesse caso, você pode configurá-las para herdar as opções de log de seus contêineres pai. Por exemplo, em um contêiner Loop For que inclui uma tarefa Executar SQL, essa tarefa pode usar as opções de log que são definidas no contêiner Loop For. Para usar as opções de log pai, defina a propriedade LoggingMode do contêiner como UseParentSetting. É possível definir essa propriedade na janela Propriedades do SSDT (SQL Server Data Tools) ou através da caixa de diálogo Configurar Logs de SSIS no Designer SSIS.

Modelos de log

Na caixa de diálogo Configurar Logs de SSIS, você também pode criar e salvar configurações de log usadas com frequência como modelos e depois usar esses modelos em vários pacotes. Isso facilita a aplicação de uma estratégia de log consistente entre vários pacotes e a modificação de definições de log nos pacotes atualizando e depois aplicando os modelos. Os modelos são armazenados em arquivos XML.

Para configurar o registro usando a caixa de diálogo Configurar Logs de SSIS

  1. Habilite o pacote e suas tarefas para registrar. O registro pode ocorrer no nível de pacote, contêiner e tarefa. Você pode especificar logs diferentes para pacotes, contêineres e tarefas.

  2. Selecione um provedor de log e adicione um log ao pacote. Os logs podem ser criados apenas no nível de pacote, e uma tarefa ou contêiner deve usar um dos logs criados para esse pacote. Cada log é associado a um dos seguintes provedores de log: arquivo de texto, SQL Server Profiler, SQL Server, Log de Eventos do Windows ou arquivo XML. Para obter mais informações, consulte Habilitar o log de pacote no SQL Server Data Tools.

  3. Selecione os eventos e as informações de esquema de log sobre cada evento que você deseja capturar no log. Para obter mais informações, consulte Configurar o log por meio de um arquivo de configuração salvo.

Configuração do provedor de log

Você pode definir propriedades por meio do Designer SSIS ou programaticamente.

Um provedor de log é criado e configurado como uma etapa na implementação do log em um pacote. Para obter mais informações, consulte Log do SSIS (Integration Services).

Depois de criar um provedor de log, você pode exibir e modificar suas propriedades na janela Propriedades do SSDT (SQL Server Data Tools).

Para obter mais informações sobre como definir essas propriedades programaticamente, consulte a documentaç.ão da classe LogProvider.

Registro para tarefas Fluxo de Dados

A tarefa Fluxo de Dados fornece muitas entradas de log personalizadas que podem ser usadas para monitorar e ajustar o desempenho. Por exemplo, você pode monitorar os componentes que podem causar vazamentos de memória ou controlar quanto tempo leva para executar um determinado componente. Para obter uma lista dessas entradas de log personalizadas e saída de exemplo de log, consulte Tarefa de Fluxo de Dados.

Usar o evento PipelineComponentTime

Talvez a entrada de log personalizada mais útil seja o evento PipelineComponentTime. Essa entrada de log reporta o número de milissegundos que cada componente do fluxo de dados leva em cada uma das cinco principais etapas de processamento. A tabela a seguir descreve essas etapas de processamento. Os desenvolvedores do Integration Services reconhecerão essas etapas como os principais métodos de um PipelineComponent.

Etapa

Descrição

Validate

O componente verifica se há valores de propriedade válidos e os parâmetros de configuração.

PreExecute

O componente executa processamento único antes de começar a processar linhas de dados.

PostExecute

O componente executa processamento único depois de processar todas as linhas de dados.

ProcessInput

A transformação ou o componente de destino processa as linhas de dados de entrada recebidas de uma transformação ou origem upstream.

PrimeOutput

O componente de origem ou transformação preenche os buffers de dados a serem passados para uma transformação downstream ou um componente de destino.

Quando você habilita o evento PipelineComponentTime, o Integration Services registra em log uma mensagem relativa a cada etapa de processamento executada por cada componente. As seguintes entradas de log mostram um subconjunto das mensagens registradas em log pelo pacote de exemplo CalculatedColumns do Integration Services:

The component "Calculate LineItemTotalCost" (3522) spent 356 milliseconds in ProcessInput.

The component "Sum Quantity and LineItemTotalCost" (3619) spent 79 milliseconds in ProcessInput.

The component "Calculate Average Cost" (3662) spent 16 milliseconds in ProcessInput.

The component "Sort by ProductID" (3717) spent 125 milliseconds in ProcessInput.

The component "Load Data" (3773) spent 0 milliseconds in ProcessInput.

The component "Extract Data" (3869) spent 688 milliseconds in PrimeOutput filling buffers on output "OLE DB Source Output" (3879).

The component "Sum Quantity and LineItemTotalCost" (3619) spent 141 milliseconds in PrimeOutput filling buffers on output "Aggregate Output 1" (3621).

The component "Sort by ProductID" (3717) spent 16 milliseconds in PrimeOutput filling buffers on output "Sort Output" (3719).

Essas entradas de log mostram que a tarefa de fluxo de dados gastou a maior parte do tempo nas seguintes etapas, mostradas aqui em ordem decrescente:

  • A origem de OLE DB denominada "Extrair Dados" gastou 688 ms. carregando dados.

  • A transformação Coluna Derivada denominada "Calculate LineItemTotalCost" gastou 356 ms. executando os cálculos em linhas de entrada.

  • A transformação Agregação denominada "Quantidade de Soma e LineItemTotalCost" gastou no total 220 ms — 141 em PrimeOutput e 79 em ProcessInput — executando cálculos e passando os dados para a próxima transformação.

Tarefas relacionadas

A lista a seguir contém links para tópicos que mostram como executar tarefas relacionadas ao recurso de log.

Conteúdo relacionado

Ícone do Integration Services (pequeno) Mantenha-se atualizado com o Integration Services

Para obter os downloads, artigos, exemplos e vídeos mais recentes da Microsoft, bem como soluções selecionadas pela comunidade, visite a página do Integration Services no MSDN:


Para receber uma notificação automática das atualizações, assine os feeds RSS disponíveis na página.

Ferramenta DTLoggedExec para log completo e detalhado (Projeto CodePlex)

Consulte também

Tarefas

Exibir entradas de log na janela Eventos de Log