Partilhar via


Manipuladores de eventos do Integration Services (SSIS)

Aplica-se a:Servidor SQL Tempo de execução da integração do SSIS no Azure Data Factory

Em tempo de execução, executáveis (pacotes e contêineres Foreach Loop, For Loop, Sequence e host de tarefas) geram eventos. Por exemplo, um evento OnError é gerado quando ocorre um erro. Você pode criar manipuladores de eventos personalizados para esses eventos para estender a funcionalidade do pacote e tornar os pacotes mais fáceis de gerenciar em tempo de execução. Os manipuladores de eventos podem executar tarefas como as seguintes:

  • Limpe o armazenamento temporário de dados quando um pacote ou tarefa terminar a execução.

  • Recupere informações do sistema para avaliar a disponibilidade de recursos antes que um pacote seja executado.

  • Atualizar dados em uma tabela quando uma pesquisa em uma tabela de referência falhar.

  • Envie uma mensagem de email quando ocorrer um erro ou um aviso ou quando uma tarefa falhar.

Se um evento não tiver manipulador de eventos, o evento será gerado para o próximo contêiner acima da hierarquia de contêineres em um pacote. Se esse contêiner tiver um manipulador de eventos, o manipulador de eventos será executado em resposta ao evento. Caso contrário, o evento é gerado para o próximo contêiner acima da hierarquia de contêineres.

O diagrama a seguir mostra um pacote simples que tem um contêiner For Loop que contém uma tarefa Executar SQL.

Pacote, For Loop, host de tarefas e Executar pacote de tarefas SQL

Somente o pacote tem um manipulador de eventos, para seu evento OnError . Se ocorrer um erro quando a tarefa Executar SQL for executada, o manipulador de eventos OnError do pacote será executado. O diagrama a seguir mostra a sequência de chamadas que faz com que o manipulador de eventos OnError para o pacote seja executado.

Fluxo do manipulador de

Os manipuladores de eventos são membros de uma coleção de manipuladores de eventos e todos os contêineres incluem essa coleção. Se você criar o pacote usando o Designer SSIS, poderá ver os membros das coleções do manipulador de eventos nas pastas Manipuladores de Eventos na guia Explorador de Pacotes do Designer SSIS.

Você pode configurar o contêiner do manipulador de eventos das seguintes maneiras:

  • Especifique um nome e uma descrição para o manipulador de eventos.

  • Indique se o manipulador de eventos é executado, se o pacote falha se o manipulador de eventos falhar e o número de erros que podem ocorrer antes que o manipulador de eventos falhe.

  • Especifique um resultado de execução a ser retornado em vez do resultado de execução real que o manipulador de eventos retorna em tempo de execução.

  • Especifique a opção de transação para o manipulador de eventos.

  • Especifique o modo de log que o manipulador de eventos usa.

Conteúdo do manipulador de eventos

Criar um manipulador de eventos é semelhante à criação de um pacote; Um manipulador de eventos tem tarefas e contêineres, que são sequenciados em um fluxo de controle, e um manipulador de eventos também pode incluir fluxos de dados. O Designer SSIS inclui a guia Manipuladores de Eventos para criar manipuladores de eventos personalizados.

Você também pode criar manipuladores de eventos programaticamente. Para obter mais informações, consulte Manipulando eventos programaticamente.

Run-Time Eventos

A tabela a seguir lista os manipuladores de eventos fornecidos pelo Integration Services e descreve os eventos em tempo de execução que fazem com que o manipulador de eventos seja executado.

Manipulador de eventos Event
OnError O manipulador de eventos para o evento OnError . Esse evento é gerado por um executável quando ocorre um erro.
OnExecStatusChanged O manipulador de eventos para o evento OnExecStatusChanged . Esse evento é gerado por um executável quando seu status de execução é alterado.
EmInformação O manipulador de eventos para o evento OnInformation . Esse evento é gerado durante a validação e execução de um executável para relatar informações. Este evento transmite apenas informações, sem erros ou avisos.
OnPostExecute O manipulador de eventos para o evento OnPostExecute . Esse evento é gerado por um executável imediatamente após terminar a execução.
OnPostValidate O manipulador de eventos para o evento OnPostValidate . Esse evento é gerado por um executável quando sua validação é concluída.
OnPreExecute O manipulador de eventos para o evento OnPreExecute . Esse evento é gerado por um executável imediatamente antes de ser executado.
OnPreValidate O manipulador de eventos para o evento OnPreValidate . Esse evento é gerado por um executável quando sua validação é iniciada.
OnProgress O manipulador de eventos para o evento OnProgress . Esse evento é gerado por um executável quando o progresso mensurável é feito pelo executável.
OnQueryCancel O manipulador de eventos para o evento OnQueryCancel . Esse evento é gerado por um executável para determinar se ele deve parar de ser executado.
OnTaskFailed O manipulador de eventos para o evento OnTaskFailed . Esse evento é gerado por uma tarefa quando ele falha.
OnVariableValueChanged O manipulador de eventos para o evento OnVariableValueChanged . Esse evento é gerado por um executável quando o valor de uma variável muda. O evento é gerado pelo executável no qual a variável é definida. Esse evento não será gerado se você definir a propriedade RaiseChangeEvent para a variável como False. Para obter mais informações, consulte Variáveis do Integration Services (SSIS).
Advertência O manipulador de eventos para o evento OnWarning . Esse evento é gerado por um executável quando ocorre um aviso.

Adicionar um manipulador de eventos a um pacote

Em tempo de execução, contêineres e tarefas geram eventos. Você pode criar manipuladores de eventos personalizados que respondem a esses eventos executando um fluxo de trabalho quando o evento é gerado. Por exemplo, você pode criar um manipulador de eventos que envia uma mensagem de email quando uma tarefa falha.

Um manipulador de eventos é semelhante a um pacote. Como um pacote, um manipulador de eventos pode fornecer escopo para variáveis e inclui um fluxo de controle e fluxos de dados opcionais. Você pode criar manipuladores de eventos para pacotes, o contêiner Foreach Loop, o contêiner For Loop, o contêiner Sequence e todas as tarefas.

Você cria manipuladores de eventos usando a superfície de design da guia Manipuladores de Eventos no Designer SSIS.

Quando a guia Manipuladores de Eventos estiver ativa, os nós Itens de Fluxo de Controle e Tarefas do Plano de Manutenção da Caixa de Ferramentas no Designer SSIS contêm a tarefa e os contêineres para criar o fluxo de controle no manipulador de eventos. Os nós Fontes de Fluxo de Dados, Transformaçõese Destinos de Fluxo de Dados contêm as fontes de dados, transformações e destinos para criar os fluxos de dados no manipulador de eventos. Para obter mais informações, consulte Fluxo de controle e fluxo de dados.

A guia Manipuladores de Eventos também inclui a área Gerenciadores de Conexões , onde você pode criar e modificar os gerenciadores de conexões que os manipuladores de eventos usam para se conectar a servidores e fontes de dados. Para obter mais informações, consulte Criar gerenciadores de conexões.

Adicionar um manipulador de eventos na guia Manipuladores de eventos

  1. No SSDT (SQL Server Data Tools), abra o projeto Integration Services que contém o pacote desejado.

  2. No Gerenciador de Soluções, clique duas vezes no pacote para abri-lo.

  3. Clique na guia Manipuladores de Eventos .

    Captura de tela da superfície de design com manipulador de eventos

    Criar o fluxo de controle e os fluxos de dados em um manipulador de eventos é semelhante à criação do fluxo de controle e fluxos de dados em um pacote. Para obter mais informações, consulte Fluxo de controle e fluxo de dados.

  4. Na lista Executável , selecione o executável para o qual você deseja criar um manipulador de eventos.

  5. Na lista Manipulador de eventos, selecione o manipulador de eventos que você deseja criar.

  6. Clique no link na superfície de design da guia Manipulador de Eventos .

  7. Adicione itens de fluxo de controle ao manipulador de eventos e conecte itens usando uma restrição de precedência arrastando a restrição de um item de fluxo de controle para outro. Para obter mais informações, consulte Fluxo de controle.

  8. Opcionalmente, adicione uma tarefa Fluxo de Dados e, na superfície de design da guia Fluxo de Dados , crie um fluxo de dados para o manipulador de eventos. Para obter mais informações, consulte Fluxo de dados.

  9. No menu Arquivo , clique em Salvar Itens Selecionados para salvar o pacote.

Definir as propriedades de um manipulador de eventos

Você pode definir propriedades na janela Propriedades do SSDT (SQL Server Data Tools) ou programaticamente.

Para obter informações sobre como definir essas propriedades no SSDT (SQL Server Data Tools), consulte Definir as propriedades de uma tarefa ou contêiner.

Para obter informações sobre como definir essas propriedades programaticamente, consulte DtsEventHandler.