Como faço para continuar após uma falha no SSIS

12

Quero implementar algo como o seguinte: insira a descrição da imagem aqui

Neste pacote, desejo percorrer uma lista de nomes de banco de dados, modificando dinamicamente as configurações do gerenciador de conexões.

No entanto, a primeira falha em "Test Connection" interromperá e falhará na execução do pacote.

Mas eu gostaria de continuar meu loop Foreach. Tenho a impressão de que isso deve ser possível (caso contrário, qual é o caso de uso dessas setas vermelhas de falha?)

As coisas que eu tentei incluem mexer com "MaximumErrorCount".

Michael J Swart
fonte

Respostas:

12

Para responder à pergunta como eu fiz, é possível continuar após as falhas, certificando-se de que MaximumErrorCount seja zero para a tarefa e seus contêineres pai ... Nesse caso, significa a tarefa "Test Connection", o contêiner "foreach" e o próprio pacote.

Acabei fazendo algo diferente. E Jamie Thomson, Verificar uma conexão antes de usá-lo, foi útil aqui. Aqui está o que eu fiz:

Substituí a tarefa Testar Conexão por uma tarefa de script. A tarefa de script era quase exatamente como o script de Jamie, exceto que eu

  • usou apenas um gerenciador de conexões, nem todos,
  • o resultado da tarefa sempre foi sucesso
  • e defino uma nova variável "User :: ConnectionSucceeded" para o resultado do teste de conexão.

Também alterei as setas que saem da tarefa de conexão de teste para avaliar expressões, elas avaliam:

  • @ [Usuário :: ConnectionSucceed] == True
  • @ [Usuário :: ConnectionSucceed] == Falso

respectivamente.

Eu também tive que lembrar de editar as várias restrições que entram na tarefa "Atualizar LastMonitored". Alterei-os para usar um "OR" lógico.

Aqui está a aparência do meu pacote SSIS agora: novo pacote

Michael J Swart
fonte
1

O caminho fácil...

Clique duas vezes na restrição de precedência (a linha verde) após a tarefa "Test Connection". Você deve ver "Opções de restrição", clicar na lista suspensa "Valor" e selecionar "Conclusão". Isso informa ao seu pacote para continuar executando depois que a tarefa for concluída, independentemente de falhar.

Nota: Não altere a lista suspensa "Operação de avaliação" de "Restrição", a menos que você queira adicionar uma Expressão a ser avaliada após a conclusão da tarefa. Mantenha também a restrição em "AND lógico".

Espero que isto ajude.

Usando a restrição de precedência

A Eneyo
fonte
A restrição de precedência foi definida como "Sucesso" deliberadamente. Além disso, alterá-lo para "Conclusão" não aborda a pergunta que fiz ou a tarefa com a qual estava lutando. Se "Testar Conexão" falhar, isso ainda interromperá a execução do pacote.
Michael J Swart
Tantas páginas lidas para finalmente encontrar esta resposta! Obrigado!
alexkovelsky