Comment continuer après un échec dans SSIS

12

Je veux implémenter quelque chose comme ceci: entrez la description de l'image ici

Dans ce package, je souhaite parcourir une liste de noms de base de données, modifiant dynamiquement les paramètres du gestionnaire de connexions.

Cependant, le premier échec sur "Test de connexion" arrêtera et échouera l'exécution du package.

Mais je voudrais continuer ma boucle Foreach. J'ai l'impression que cela devrait être possible (sinon quel est le cas d'utilisation de ces flèches rouges d'échec?)

J'ai essayé de jouer avec "MaximumErrorCount".

Michael J Swart
la source

Réponses:

12

Pour répondre à la question telle que je l'ai posée, il est possible de continuer après les échecs en s'assurant que MaximumErrorCount est nul pour la tâche et ses conteneurs parents ... Dans ce cas cela signifie la tâche "Test Connection", le conteneur "foreach" et le package lui-même.

Mais j'ai fini par faire quelque chose de différent. Et Vérifier une connexion de Jamie Thomson avant de l'utiliser a été utile ici. Voici ce que j'ai fait:

J'ai remplacé la tâche Test Connection par une tâche de script. La tâche de script était presque exactement comme le script de Jamie, sauf que je

  • utilisé qu'un seul gestionnaire de connexions, pas tous,
  • le résultat de la tâche a toujours été un succès
  • et j'ai défini une nouvelle variable "User :: ConnectionSucceeded" sur le résultat du test de connexion.

J'ai également changé les flèches sortant de la tâche de connexion de test pour évaluer les expressions, elles évaluent:

  • @ [User :: ConnectionSucceed] == True
  • @ [User :: ConnectionSucceed] == False

respectivement.

Je devais également me souvenir de modifier les multiples contraintes entrant dans la tâche "Mettre à jour LastMonitored". Je les ai modifiés pour utiliser un "OU" logique.

Voici à quoi ressemble mon package SSIS maintenant: nouveau package

Michael J Swart
la source
1

La manière la plus simple ...

Double-cliquez sur la contrainte de priorité (la ligne verte) après la tâche "Tester la connexion". Vous devriez voir "Options de contrainte", cliquez sur la liste déroulante "Valeur" et sélectionnez "Achèvement". Cela indique à votre package de continuer à s'exécuter une fois la tâche terminée, qu'elle échoue ou non.

Remarque: Ne modifiez pas la liste déroulante "Opération d'évaluation" de "Contrainte" sauf si vous souhaitez ajouter une expression à évaluer une fois la tâche terminée. Gardez également la contrainte sur "ET logique".

J'espère que cela t'aides.

Utilisation de la contrainte de priorité

A Eneyo
la source
La contrainte de priorité a été définie sur "Succès" délibérément. De plus, le changer en "Achèvement" ne répond pas à la question que j'ai posée ou à la tâche avec laquelle je me débattais. Si "Test de connexion" échoue, cela arrête toujours l'exécution du package.
Michael J Swart du
Tant de pages lues pour enfin trouver cette réponse! Merci!
alexkovelsky