Comment puis-je arrêter l'exécution d'un package basé sur une procédure stockée de sortie?
J'ai un package SSIS qui la première tâche exécute une procédure stockée pour vérifier que la date d'exécution n'est pas un jour férié. Si il est un jour férié, puis il renvoie un jeu d'enregistrements avec un nombre de 1.
Je veux être en mesure d'arrêter la SSIS si le recordcount est 1, mais de continuer à exécuter si la recordcount est égale à zéro. Je ne sais pas la meilleure façon de le mettre en œuvre. Ce contrôle de l'élément de flux dois-je ajouter le package?
Je suis relativement nouveau à SSIS donc je ne sais pas ce que l'élément à ajouter. Toute aide serait super.
OriginalL'auteur Taryn | 2011-06-16
Vous devez vous connecter pour publier un commentaire.
Bien une façon est de créer une tâche d'Exécution SQl à utiliser qui vous permet de définir la valeur de la variable @Vacances. Puis modifier le Succès du flux sortant qui exécutent SQl tâche à la fois le succès et une contrainte par un clic droit sur la ligne verte elle-même et en cliquant sur modifier. Choisissez l'Expression et de la Contrainte, comme l'opération d'évaluation, puis ajouter une expression, quelque chose comme ci-dessous pour l'expression:
OriginalL'auteur HLGEM
Ici est une option qui peut vous donner une idée pour y parvenir. L'exemple vérifie si la date d'aujourd'hui est un jour férié en vérifiant à l'encontre d'un tableau contenant la liste des jours fériés. Reste du paquet de tâches s'exécute uniquement si la date du jour n'est pas férié. L'exemple utilise
SSIS 2008 R2
etSQL Server 2008 R2
base de données.Étape-par-étape du processus:
Créer une table nommée
dbo.Holidays
et de la procédure stockée nomméedbo.CheckTodayIsHoliday
à l'aide du script donné en vertu de l' Scripts SQL section. Remplir le tableau comme indiqué dans la capture d'écran #1.Sur le package SSIS, créer deux variables nommées
RecordCount
etSQLProcedure
. Les remplir avec des valeurs comme indiqué dans la capture d'écran #2. aussi, créer une Connexion OLE DB pour se connecter à SQL Server base de données. Je l'ai nommé comme SQLServer dans cet exemple. Consultez la capture d'écran #3. L'exemple utilise les Données de la Source au lieu de la connexion normale. C'est pourquoi l'icône est différente dans la capture d'écran.Sur le package SSIS, placez un
Data Flow task
et à l'intérieur de la tâche de flux de données en placer uneOLE DB source
etRow count transformation
. Consultez la capture d'écran #4.Configurer le
OLE DB Source
comme indiqué dans les captures d'écran #5 et #6. Cela permettra d'exécuter la procédure stockée et récupérer les résultats.Configurer le
Row count transformation
comme indiqué dans la capture d'écran #7.Sur le
Control Flow
, j'ai placé quelques plus factice tâches, comme indiqué dans la capture d'écran #8.Cliquez-droit sur le connecteur entre la Tâche de Flux de Données et la tâche suivante (Conteneur de Séquence), comme indiqué dans la capture d'écran #9.
Configurer le
Precedence Constraint Editor
comme indiqué dans la capture d'écran #10.Capture d'écran #11 montre l'exécution d'un package avec la date d'aujourd'hui (
June 16, 2011
) présents dans ledbo.Holidays
table marquée comme des vacances. Bien sûr, le 16 juin 2011 n'est pas un jour férié où je travail, sauf si je prends des vacances.Modifier le tableau de données comme indiqué dans la capture d'écran #12.
Capture d'écran #13 montre l'exécution d'un package avec la date d'aujourd'hui (
June 16, 2011
) pas présents dans ledbo.Holidays
table.Espère que ça aide.
Scripts SQL:
Capture d'écran #1:
Capture d'écran #2:
Capture d'écran #3:
Capture d'écran #4:
Capture d'écran #5:
Capture d'écran #6:
Capture d'écran #7:
Capture d'écran n ° 8:
Capture d'écran n ° 9:
Capture d'écran n ° 10:
Capture d'écran #11:
Capture d'écran n ° 12:
Capture d'écran n ° 13:
OriginalL'auteur