Partilhar via


Restrições de precedência

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

As restrições de precedência vinculam executáveis, contêineres e tarefas em pacotes em um fluxo de controle e especificam condições que determinam se executáveis são executados. Um executável pode ser um contêiner For Loop, Foreach Loop ou Sequence; uma tarefa; ou um manipulador de eventos. Os manipuladores de eventos também usam restrições de precedência para vincular seus executáveis em um fluxo de controle.

Uma restrição de precedência vincula dois executáveis: o executável de precedência e o executável restrito. O executável de precedência é executado antes do executável restrito, e o resultado da execução do executável de precedência pode determinar se o executável restrito é executado. O diagrama a seguir mostra dois executáveis vinculados por uma restrição de precedência.

Executáveis conectados por uma restrição de precedência

Em um fluxo de controle linear, ou seja, sem ramificação, as restrições de precedência governam sozinhas a sequência na qual as tarefas são executadas. Caso um fluxo de controlo se bifurque, o motor de execução do Integration Services irá determinar a ordem de execução das tarefas e dos contêineres que seguem imediatamente a bifurcação. O mecanismo de tempo de execução também determina a ordem de execução entre fluxos de trabalho não conectados em um fluxo de controle.

A arquitetura de contêiner aninhado do Integration Services permite que todos os contêineres, exceto o contêiner de host de tarefas que encapsula apenas uma única tarefa, incluam outros contêineres, cada um com seu próprio fluxo de controle. Os contêineres For Loop, Foreach Loop e Sequence podem incluir várias tarefas e outros contêineres, que, por sua vez, podem incluir várias tarefas e contêineres. Por exemplo, um pacote com uma tarefa Script e um contêiner Sequence tem uma restrição de precedência que vincula a tarefa Script e o contêiner Sequence. O contêiner Sequência inclui três tarefas de Script e suas restrições de precedência vinculam as três tarefas de Script em um fluxo de controle. O diagrama a seguir mostra as restrições de precedência em um pacote com dois níveis de aninhamento.

Restrições de precedência em um pacote

Como o pacote está na parte superior da hierarquia de contêineres do SSIS, vários pacotes não podem ser vinculados por restrições de precedência; no entanto, você pode adicionar uma tarefa Executar Pacote a um pacote e vincular indiretamente outro pacote ao fluxo de controle.

Você pode configurar restrições de precedência das seguintes maneiras:

  • Especifique uma operação de avaliação. A restrição de precedência usa um valor de restrição, uma expressão, ambos ou ambos para determinar se o executável restrito é executado.

  • Se a restrição de precedência usar um resultado de execução, você poderá especificar o resultado da execução como êxito, falha ou conclusão.

  • Se a restrição de precedência usa um resultado de avaliação, pode-se fornecer uma expressão que avalie para um valor booleano.

  • Especifique se a restrição de precedência é avaliada individualmente ou em conjunto com outras restrições que se aplicam ao executável restrito.

Operações de avaliação

O Integration Services fornece as seguintes operações de avaliação:

  • Uma restrição que usa apenas o resultado da execução do executável de precedência para determinar se o executável restrito é executado. O resultado da execução do executável de precedência pode ser conclusão, êxito ou falha. Esta é a operação padrão.

  • Uma expressão que é avaliada para determinar se o executável restrito é executado. Se a expressão for avaliada como true, o executável restrito será executado.

  • Uma expressão e uma restrição que combina os requisitos de resultados de execução do executável de precedência e os resultados de retorno da avaliação da expressão.

  • Uma expressão ou restrição que utiliza os resultados da execução precedente ou os resultados de retorno da avaliação da expressão.

O Designer SSIS usa cores para identificar o tipo de restrição de precedência. A restrição Êxito é verde, a restrição Falha é vermelha e a restrição Conclusão é azul. Para exibir rótulos de texto no designer SSIS que mostram o tipo de restrição, você deve configurar os recursos de acessibilidade do Designer SSIS.

A expressão deve ser uma expressão SSIS válida e pode incluir funções, operadores e variáveis personalizadas e de sistema. Para obter mais informações, consulte Expressões do Integration Services (SSIS) e Variáveis do Integration Services (SSIS).

Resultados da Execução

A restrição de precedência pode usar os seguintes resultados de execução sozinhos ou em combinação com uma expressão.

  • A conclusão requer apenas que o executável precedente tenha sido completado, sem levar em conta o resultado, para que o executável restrito possa ser executado.

  • O êxito requer que o executável de precedência seja concluído com êxito para que o executável restrito seja executado.

  • A falha requer que o executável de precedência falhe para que o executável restrito seja executado.

Observação

Somente as restrições de precedência que são membros da mesma coleção Precedence Constraint podem ser agrupadas numa condição de conjunção lógica E. Por exemplo, não é possível combinar restrições de precedência de dois contêineres Foreach Loop.

Definir as propriedades de uma restrição de precedência com o Editor de Restrição de Precedência

  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 Fluxo de controle .

  4. Clique duas vezes na restrição de precedência.

    O Editor de Restrição de Precedência é aberto.

  5. Na lista pendente Operação de avaliação, selecione uma operação de avaliação.

  6. Na lista suspensa Valor, selecione o resultado da execução do executável de precedência.

  7. Se a operação de avaliação usar uma expressão, na caixa Expressão , digite uma expressão e clique em Testar para avaliar a expressão.

    Observação

    Os nomes das variáveis diferenciam maiúsculas de minúsculas.

  8. Se várias tarefas ou contêineres estiverem conectados ao executável restrito, selecione Lógico E para especificar que os resultados de execução de todos os executáveis anteriores devem ser avaliados como verdadeiros. Selecione Lógico OU para especificar que apenas um resultado de execução deve ser avaliado como verdadeiro.

  9. Clique em OK para fechar o Editor de Restrição de Precedência.

  10. Para guardar o pacote atualizado, clique em Guardar itens selecionados no menu Ficheiro.

Editor de Restrição de Precedência

Use a caixa de diálogo Editor de Restrição de Precedência para configurar restrições de precedência.

Opções

Operação de avaliação
Especifique a operação de avaliação que a restrição de precedência usa. As operações são: Restrição, Expressão, Expressão e Restriçãoe Expressão ou Restrição.

Valor
Especifique o valor da restrição: de sucesso, de falha ou de conclusão.

Observação

A linha de restrição de precedência é verde para Sucesso, realçada para Falha e azul para Conclusão.

Expressão
Se estiver usando as operações Expressão, Expressão e Restrição ou Expressão ou Restrição, digite uma expressão ou inicie o Construtor de Expressões para criar a expressão. A expressão deve avaliar-se a um valor booleano.

Teste
Valide a expressão.

Lógica E
Selecione esta opção para especificar que várias restrições de precedência no mesmo executável devem ser avaliadas juntas. Todas as restrições devem ser avaliadas como True.

Observação

Esse tipo de restrição de precedência aparece como uma linha verde sólida, realçada ou azul.

Lógica OU
Selecione esta opção para especificar que várias restrições de precedência no mesmo executável devem ser avaliadas juntas. Pelo menos uma restrição deve ser avaliada como True.

Observação

Esse tipo de restrição de precedência aparece como uma linha pontilhada verde, realçada ou azul.

Definir as propriedades de uma restrição de precedência na janela Propriedades

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

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

  3. Clique na guia Fluxo de controle . Na superfície de design da guia Fluxo de Controle , clique com o botão direito do mouse na restrição de precedência e clique em Propriedades. Na janela Propriedades, modifique os valores de propriedade.

  4. Na janela Propriedades , defina as seguintes propriedades de leitura/gravação de restrições de precedência:

    Propriedade de leitura/gravação Ação de configuração
    Descrição Forneça uma descrição.
    EvalOp Selecione uma operação de avaliação. Se a operação Expression, ExpressionAndConstant ou ExpressionOrConstant estiver selecionada, você poderá especificar uma expressão.
    Expressão Caso a operação de avaliação inclua uma expressão, forneça uma expressão. A expressão deve avaliar-se a um valor booleano. Para obter mais informações sobre a linguagem de expressão, consulte Expressões do Integration Services (SSIS).
    LógicoE Defina LogicalAnd para especificar se a restrição de precedência é avaliada em conjunto com outras restrições de precedência, quando vários executáveis precedem e são vinculados ao executável restrito
    Nome Atualize o nome da restrição de precedência.
    Mostrar Anotação Especifique o tipo de anotação a ser usada. Escolha Nunca para desabilitar anotações, AsNeeded para habilitar a anotação sob demanda, ConstraintName para anotar automaticamente usando o valor da propriedade Name, ConstraintDescription para anotar automaticamente usando o valor da propriedade Description e ConstraintOptions para anotar automaticamente usando os valores das propriedades Value e Expression.
    Valor Se a operação de avaliação especificada na propriedade EvalOP incluir uma restrição, selecione o resultado da execução do executável de restrição.
  5. Feche a janela Propriedades.

  6. Para guardar o pacote atualizado, clique em Guardar itens selecionados no menu Ficheiro.

Definir o valor de uma restrição de precedência com o menu de atalho

  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 Fluxo de controle .

  4. Na superfície de design da guia Fluxo de Controle, clique com o botão direito do mouse na restrição de precedência e clique em Êxito, Falha ou Conclusão.

  5. Para salvar o pacote atualizado, clique em Salvar Item Selecionado no menu Arquivo .

Adicionar expressões a restrições de precedência

Uma restrição de precedência pode usar uma expressão para definir a restrição entre dois executáveis: o executável de precedência e o executável restrito. Os executáveis podem ser tarefas ou contêineres. A expressão pode ser usada sozinha ou em combinação com o resultado da execução do executável de precedência. O resultado da execução de um executável é sucesso ou falha. Ao configurar o resultado da execução de uma restrição de precedência, você pode definir o resultado da execução como Êxito, Falha ou Conclusão. Êxito requer que o executável de precedência seja bem-sucedido, Falha requer que o executável de precedência falhe e Conclusão indica que o executável restrito deve ser executado independentemente de a tarefa de precedência ser bem-sucedida ou falhar. Para obter mais informações, consulte Restrições de precedência.

A expressão deve ser avaliada como True ou False e deve ser uma expressão válida do Integration Services. A expressão pode usar literais, variáveis de sistema e personalizadas, e as funções e operadores que a gramática de expressão SSIS fornece. Por exemplo, a expressão @Count == SQRT(144) + 10 usa a variável Count, a função SQRT e os operadores equal (==) e add (+). Para obter mais informações, consulte Expressões dos Serviços de Integração (SSIS).

Na ilustração a seguir, a tarefa A e a tarefa B são vinculadas por uma restrição de precedência que usa um resultado de execução e uma expressão. O valor de restrição é definido como Success e a expressão é @X >== @Z. A tarefa B, a tarefa restrita, é executada somente se a tarefa A for concluída com êxito e o valor da variável X for maior ou igual ao valor da variável Z.

Restrição de precedência entre duas tarefas

Os executáveis também podem ser vinculados usando várias restrições de precedência que contêm expressões diferentes. Por exemplo, na ilustração a seguir, as tarefas B e C são vinculadas à tarefa A por restrições de precedência que usam resultados de execução e expressões. Ambos os valores de restrição são definidos como Sucesso. Uma restrição de precedência inclui a expressão @X >== @Z, e a outra restrição de precedência inclui a expressão @X < @Z. Dependendo dos valores da variável X e da variável Z, a tarefa C ou a tarefa B é executada.

Expressões sobre restrições de precedência

Você pode adicionar ou modificar uma expressão usando o Editor de Restrição de Precedência no Designer SSIS e a janela Propriedades que o SSDT (SQL Server Data Tools) fornece. No entanto, a janela Propriedades não fornece verificação da sintaxe da expressão.

Se uma restrição de precedência incluir uma expressão, um ícone aparecerá na superfície de design da guia Fluxo de Controle , ao lado da restrição de precedência, e a Dica de Ferramenta no ícone exibirá a expressão.

Adicionar uma expressão a uma restrição de precedência

  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 Fluxo de controle .

  4. Na superfície de design da guia Fluxo de Controle , clique duas vezes na restrição de precedência. O Editor de Restrição de Precedência é aberto.

  5. Selecione Expressão, Expressão e Restrição ou Expressão ou Restrição na lista de operações de avaliação .

  6. Digite uma expressão na caixa de texto Expressão ou inicie o Construtor de Expressões para criar uma expressão.

  7. Para validar a sintaxe da expressão, clique em Testar.

  8. Para guardar o pacote atualizado, clique em Guardar itens selecionados no menu Ficheiro.

Combine valores e expressões de execução

A tabela a seguir descreve os efeitos da combinação de uma restrição de valor de execução e uma expressão em uma restrição de precedência.

Operação de avaliação A restrição resulta em A expressão é avaliada como Execuções executáveis restritas
Restrição Verdade N/A Verdade
Restrição Falso N/A Falso
Expressão N/A Verdade Verdade
Expressão N/A Falso Falso
Restrição e expressão Verdade Verdade Verdade
Restrição e expressão Verdade Falso Falso
Restrição e expressão Falso Verdade Falso
Restrição e expressão Falso Falso Falso
Restrição ou expressão Verdade Verdade Verdade
Restrição ou expressão Verdade Falso Verdade
Restrição ou expressão Falso Verdade Verdade
Restrição ou expressão Falso Falso Falso

Cenários de restrição complexos com várias restrições de precedência

Uma restrição de precedência conecta dois executáveis: duas tarefas, dois contêineres ou um de cada. Eles são conhecidos como o executável de precedência e o executável restrito. Um executável restrito pode ter várias restrições de precedência. Para obter mais informações, consulte Restrições de precedência.

A montagem de cenários de restrição complexos agrupando restrições permite implementar um fluxo de controle complexo em pacotes. Por exemplo, na ilustração a seguir, a Tarefa D está vinculada à Tarefa A por uma restrição Sucesso , a Tarefa D está vinculada à Tarefa B por uma restrição Falha e a Tarefa D está vinculada à Tarefa C por uma restrição Sucesso . As restrições de precedência entre a Tarefa D e a Tarefa A, entre a Tarefa D e a Tarefa B, e entre a Tarefa D e a Tarefa C participam de uma relação lógica e. Portanto, para que a Tarefa D seja executada, a Tarefa A deve ser executada com êxito, a Tarefa B deve falhar e a Tarefa C deve ser executada com êxito.

Tarefas ligadas por restrições de precedência

Propriedade LogicalAnd

Se uma tarefa ou um contêiner tiver várias restrições, a propriedade LogicalAnd especifica se uma restrição de precedência é avaliada individualmente ou em conjunto com outras restrições.

Você pode definir a propriedade LogicalAnd usando o Editor de Restrição de Precedência no Designer SSIS ou na janela Propriedades que o SSDT (SQL Server Data Tools) fornece.

Definir o valor padrão para restrições de precedência

Quando você usa o Designer SSIS pela primeira vez, o valor padrão de uma restrição de precedência é Success. Siga estas etapas para configurar o Designer SSIS para usar um valor padrão diferente para restrições de precedência.

  1. Abra o SSDT (SQL Server Data Tools).

  2. No menu Ferramentas , clique em Opções.

  3. Na caixa de diálogo Opções, expanda Business Intelligence Designers e, em seguida, expanda Integration Services Designers.

  4. Clique em Conexão Automática do Fluxo de Controle e selecione Conectar uma nova forma à forma selecionada por padrão.

  5. Na lista suspensa, escolha usar uma restrição de falha para a nova forma ou usar uma restrição de conclusão para a nova forma.

  6. Clique em OK.

Criar uma restrição de precedência padrão

  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 Fluxo de controle .

  4. Na superfície de design da guia Fluxo de Controle , clique na tarefa ou contêiner e arraste seu conector para o executável ao qual você deseja aplicar a restrição de precedência.

  5. Para guardar o pacote atualizado, clique em Guardar itens selecionados no menu Ficheiro.