2009-02-06 5 views
7

J'ai un objet SSis Mulitcast qui divise mon flux en 2 chemins.SSIS Multicast - Attendre la fin d'une fork avant d'exécuter la prochaine fork

Dans le premier chemin, j'insère le flux dans une autre base de données.

Dans le second chemin, je mets à jour les lignes du flux pour montrer qu'elles ont été insérées.

J'ai besoin d'un moyen de faire attendre un chemin jusqu'à ce que l'autre chemin soit terminé. (Donc, je peux gérer toutes les erreurs d'insertion et ne pas mettre à jour les lignes pour ceux qui étaient des erreurs.)

Toute aide est appréciée.

Répondre

3

Je regardais dans ce plus et voici la réponse que je suis venu avec:

Sur chaque sortie du multicast je mets une opération de tri, puis je les rejoindre à l'aide d'une opération de MergeJoin. Après cela, je fais une mise à jour SQL en utilisant une commande OLE DB sur les éléments qui n'ont pas une valeur d'erreur de la mergejoin.

+0

Juste ce dont j'avais besoin! J'essayais de résoudre ce problème en utilisant une fusion, mais cela n'a pas fonctionné. J'ai 2 SCD, et je voulais que celui-ci soit exécuté après que l'un soit terminé. Je l'ai fait en faisant un multitâche, 2 tris, une jointure de fusion, et une autre sorte après pour supprimer les doublons. – Mez

1

Dans ce cas, je ne voudrais pas utiliser un multicast, mais un flux de données régulière de sorte que l'on ne commence pas avant le premier complété avec succès

2

Vous ne pouvez pas le faire dans SSIS. Vous pouvez uniquement appliquer des contraintes de priorité (c'est-à-dire imposer l'ordre de l'exécution) au niveau du flux de contrôle.

1

Si vous savez à peu près combien de temps il faudra pour terminer une fourche, vous pouvez utiliser une commande OLE DB sur votre deuxième fourche. Tapez "waitfor delay '00: 00: 15'" pour que le serveur attende 15 secondes avant de passer à l'étape suivante.

Waitfor

+0

Veuillez supprimer les espaces dans votre message. –

Questions connexes