Depurando o fluxo de controle

Aplica-se a:SQL Server SSIS Integration Runtime no Azure Data Factory

SQL Server Data Tools (SSDT) e o Microsoft Integration Services incluem recursos e ferramentas que você pode usar para solucionar problemas do fluxo de controle em um pacote Integration Services.

  • Integration Services oferece suporte a pontos de interrupção em contêineres e tarefas.

  • O SSIS Designer fornece relatórios de progresso em tempo de execução.

  • SQL Server Data Tools (SSDT) oferece janelas de depuração.

Pontos de interrupção

O SSIS Designer fornece a caixa de diálogo Definir Pontos de Interrupção, na qual você pode definir pontos de interrupção habilitando as condições de interrupção e especificando o número de vezes que um ponto de interrupção pode ser atingido antes que a execução do pacote seja suspensa. Os pontos de interrupção podem ser habilitados no nível do pacote ou no nível do componente individual. Se as condições da interrupção estiverem habilitadas no nível da tarefa ou contêiner, o ícone do ponto de interrupção aparecerá próximo à tarefa ou contêiner sobre a superfície de design da guia Fluxo de Controle . Se as condições de interrupção estiverem habilitadas no pacote, o ícone de ponto de interrupção aparecerá no rótulo da guia Fluxo de Controle .

Quando um ponto de interrupção é atingido, o ícone de ponto de interrupção muda para ajudá-lo a identificar a fonte do ponto de interrupção. Você pode adicionar, excluir e alterar pontos de interrupção quando o pacote estiver executando.

Integration Services fornece dez pontos de interrupção que você pode habilitar em todas as tarefas e contêineres. Na caixa de diálogo Definir Pontos de Interrupção , você pode habilitar os pontos de interrupção das seguintes condições:

Condição de interrupção Descrição
Quando a tarefa ou o contêiner recebe o evento OnPreExecute . Chamado quando uma tarefa está prestes a ser executada. Este evento é disparado por uma tarefa ou contêiner imediatamente antes de ser executado.
Quando a tarefa ou o contêiner recebe o evento OnPostExecute . Chamado imediatamente após a conclusão da lógica de execução da tarefa. Este evento é criado por uma tarefa ou contêiner imediatamente após sua execução.
Quando a tarefa ou o contêiner recebe o evento OnError . Chamado por uma tarefa ou contêiner quando ocorre um erro.
Quando a tarefa ou o contêiner recebe o evento OnWarning . É chamado quando a tarefa está em um estado que não justifica um erro, mas justifica um aviso.
Quando a tarefa ou o contêiner recebe o evento OnInformation . Chamado quando a tarefa precisa fornecer informações.
Quando a tarefa ou o contêiner recebe o evento OnTaskFailed . Chamado pelo host da tarefa quando ocorre uma falha.
Quando a tarefa ou o contêiner recebe o evento OnProgress . Usado para atualizar o progresso da execução da tarefa.
Quando a tarefa ou o contêiner recebe o evento OnQueryCancel . É chamado a qualquer momento durante o processamento da tarefa, quando a execução puder ser cancelada.
Quando a tarefa ou o contêiner recebe o evento OnVariableValueChanged . Chamado pelo runtime Integration Services quando o valor de uma variável muda. O RaiseChangeEvent da variável deve ser definido como true para gerar este evento.

** Aviso ** A variável associada a esse ponto de interrupção precisa ser definida no escopo de contêiner. Se a variável for definida ao escopo de pacote, o ponto de interrupção não será atingido.
Quando a tarefa ou o contêiner recebe o evento OnCustomEvent . Chamado por tarefas para gerar eventos personalizados definidos por tarefa.

Além das condições de interrupção disponíveis para todas as tarefas e contêineres, algumas tarefas e contêineres incluem condições de interrupção especiais para definir pontos de interrupção. Por exemplo, você pode habilitar uma condição de interrupção no contêiner Loop For que defina um ponto de interrupção que suspenda a execução no início de cada iteração do loop.

Para adicionar flexibilidade e força ao ponto de interrupção, você pode modificar o comportamento de um ponto de interrupção especificando as seguintes condições:

  • A contagem de ocorrências, ou o número máximo de vezes que uma condição de interrupção ocorre antes que a execução seja suspensa.

  • O tipo de contagem de ocorrência ou a regra que especifica o momento em que a condição de interrupção aciona o ponto de interrupção.

Os tipos de contagem de ocorrências, exceto o tipo Sempre, são ainda especificados pelo número de ocorrências. Por exemplo, se o tipo for "Número de ocorrências igual a" e o número de ocorrências for 5, a execução será suspensa na sexta ocorrência da condição de interrupção.

A tabela a seguir descreve os tipos de contagem de acessos.

Tipo de contagem de ocorrências Descrição
Sempre A execução será sempre suspensa quando ocorrer o ponto de interrupção.
Contagem de ocorrências é igual a A execução será suspensa quando o número de vezes que o ponto de interrupção ocorreu for igual à contagem de ocorrências.
Número de ocorrências maior ou igual a A execução será suspensa quando o número de vezes que o ponto de interrupção ocorreu for igual ou maior que a contagem de ocorrências.
Contagem múltipla de ocorrências A execução é suspensa quando ocorre um múltiplo do número de ocorrências. Por exemplo, se você definir esta opção como 5, a execução será suspensa a cada quinta vez.

Para definir pontos de interrupção

Relatório de progresso

O Designer do SSIS inclui dois tipos de exibição do progresso: código de cores na superfície de design da guia Fluxo de Controle e mensagens de progresso na guia Progresso.

Quando você executa um pacote, o Designer SSIS descreve o progresso da execução exibindo cada tarefa ou contêiner usando uma cor que indica o seu status. Você pode identificar pela cor se o elemento está esperando para ser executado, está em execução, terminou com sucesso ou terminou sem-sucesso. Depois que você parar a execução de pacote, a codificação de cor desaparece.

A tabela a seguir descreve as cores usadas para indicar o estado de execução.

Cor Status de execução
Cinza Aguardando execução
Amarelo Executando
Verde Executado com sucesso
realçado Executado com erros

A guia Progresso exibe as tarefas e contêineres na ordem de execução e inclui os tempos de início e fim, avisos e mensagens de erro. Depois que você parar a execução do pacote, as informações de progresso continuarão disponíveis na guia Resultados da Execução .

Observação

Para habilitar ou desabilitar a exibição de mensagens na guia Progresso , marque ou desmarque a opção Depurar Relatório do Progresso no menu SSIS .

O diagrama a seguir mostra a guia Progresso.

Guia Progresso do Designer do SSIS

Janelas de depuração

SQL Server Data Tools (SSDT) inclui muitas janelas que você pode usar para trabalhar com pontos de interrupção e para depurar pacotes contendo pontos de interrupção. Para aprender mais sobre cada janela, abra a janela e, então, pressione F1 para exibir a Ajuda da janela.

Para abrir essas janelas no SQL Server Data Tools (SSDT), clique no menu Depurar, aponte para Janelas e, em seguida, clique em Pontos de interrupção, Saída ou Imediato.

A tabela a seguir descreve cada janela.

Janela Descrição
Pontos de interrupção Exibe os pontos de interrupção em um pacote e fornece opções para habilitar e excluir pontos de interrupção.
Saída Exibe mensagens de status dos recursos no SQL Server Data Tools (SSDT).
Imediato Usado para depurar e avaliar expressões e imprimir valores variáveis.

Depurar um pacote por meio da definição de pontos de interrupção em uma tarefa ou contêiner

Este procedimento descreve como definir pontos de interrupção em um pacote, uma tarefa, um contêiner Loop For, um contêiner Loop Foreach ou um contêiner Sequência.

Para definir pontos de interrupção em um pacote, uma tarefa ou um contêiner

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

  2. Clique duas vezes no pacote em que você deseja definir pontos de interrupção.

  3. No SSIS Designer, siga este procedimento:

    • Para definir pontos de interrupção no objeto de pacote, clique na guia Fluxo de Controle , coloque o cursor em qualquer lugar na tela de fundo da superfície de design e clique com o botão direito do mouse e clique em Editar Pontos de Interrupção.

    • Para definir pontos de interrupção em um fluxo de controle de pacote, clique na guia Fluxo de Controle , clique com o botão direito do mouse em uma tarefa, um contêiner Loop For, um contêiner Loop Foreach ou um contêiner Sequência, e clique em Editar Pontos de Interrupção.

    • Para definir pontos de interrupção em um manipulador de eventos, clique na guia Manipulador de Eventos , clique com o botão direito do mouse em uma tarefa, um contêiner Loop For, um contêiner Loop Foreach ou um contêiner Sequência e clique em Editar Pontos de Interrupção.

  4. Na caixa de diálogo Configurar pontos de interrupção de <nome do contêiner>, selecione os pontos de interrupção que deseja habilitar.

  5. Opcionalmente, modifique o tipo de contagem de ocorrências e o número de contagem de ocorrências para cada ponto de interrupção.

  6. Para salvar o pacote, clique em Salvar Itens Selecionados no menu Arquivo .

Definir Pontos de Interrupção

Use a caixa de diálogo Definir Pontos de Interrupção para especificar os eventos nos quais habilitar pontos de interrupção e para controlar o comportamento do ponto de interrupção.

Opções

Enabled
Selecione para habilitar um ponto de interrupção em um evento.

Condição de interrupção
Exiba uma lista de eventos disponíveis nos quais definir pontos de interrupção.

Tipo de Contagem de Hits
Especifique quando o ponto de interrupção entra em vigor.

Valor Descrição
Always A execução será sempre suspensa quando ocorrer o ponto de interrupção.
Número de ocorrências é igual a A execução será suspensa quando o número de vezes que o ponto de interrupção ocorreu for igual à contagem de ocorrências.
Atingir valor maior ou igual a A execução será suspensa quando o número de vezes que o ponto de interrupção ocorreu for igual ou maior que a contagem de ocorrências.
Multiplicador da contagem de ocorrências A execução é suspensa quando ocorre um múltiplo do número de ocorrências. Por exemplo, se você definir esta opção como 5, a execução será suspensa a cada quinta vez.

Contagem de acessos
Especifique o número de ocorrências a partir do qual uma interrupção deve ser acionada. Esta opção não estará disponível se o ponto de interrupção estiver sempre ativado.