SSIS Composant de Script avec Plusieurs Entrées
Je suis à la recherche d'un moyen de créer un composant de script dans SSIS qui accepte les entrées multiples.
J'ai besoin de cela afin que je puisse faire une forme de coutume de les rejoindre.
Il semble vraiment bête qu'un script peut avoir plusieurs sorties, mais une seule entrée, je suis sûr que je dois être en train de faire quelque chose de mal.
Toute aide?
OriginalL'auteur Craig Warren | 2009-04-22
Vous devez vous connecter pour publier un commentaire.
essayer de mettre une Union de Tous les composants avant de votre composant de script, et plutôt que d'avoir les colonnes correspondent, ajouter des colonnes à la sortie, de sorte que chaque élément venant en vents dans une colonne unique.
Garder à l'esprit qu'au début, le script de SSIS composant de traiter les éléments ligne par ligne, donc une coutume de rejoindre mécanisme devra être fait à l'aide de certaines collections et à la capture de l'événement qui se déclenche après que toutes les lignes ont été traitées.
Veuillez garder à l'esprit que je suis en supposant que vous êtes en utilisant un composant de script dans le Flux de Données et le Contrôle de Flux, et que je suis en supposant que vous êtes en utilisant SSIS 2005.
Ne supposons que vous pouviez me pointer dans la direction de certains des exemples de code pour le stockage de lignes dans les collections?
OriginalL'auteur CodeMonkey1313
Je suis actuellement à l'essai avec l'aide de variables SSIS pour passer de synchronisation des objets à partir d'un composant de script ot l'autre. C'est plutôt clumsey, mais vous pouvez utiliser efficacement plusieurs composants de script pour accepter des entrées, et ensuite utiliser le Système.Le filetage des classes à la synchronisation de la transmission de valeurs à partir d'un composant de script à l'autre.
L'obstacle est que chaque script est dans son propre espace de noms et ne peut pas les classes d'actions avec d'autres scripts (sauf si vous voulez compiler & déployer votre propre montage avec SSIS). Ce que je fais actuellement est en train de passer (en plus de la variable partagée) une référence à un objet[], contenant une référence à un ManualResetEvent, SSIS PipelineBuffer, et un tableau de pipeline de la colonne des indices.
Ce qui est suffisant pour permettre la réception de script pour reconstruire l'autre script d'entrée du pipeline, c'est la pompe à sec, alors le signal de retour que c'est fini.
Il est fonctionnel, même si je suis actuellement à la recherche de solutions de rechange sur le fait que (il semblerait) SSIS appelle "ProcessInput" deux fois au cours d'un composant de script du temps de la vie. Si l'un des génies ici ont DONC une solution à cela, alors je pense que nous avons assez bien obtenu un [clumsey] solution permettant à plusieurs entrées pour un seul composant de script.
Tout preneurs?
---- EDIT----
J'ai eu cette place et en cours d'exécution - cette astuce est à utiliser de synchronisation pour éviter le multi-thread invocation de ProcessInput de tenter de partager th tampon d'entrée plusieurs fois. Ci-dessous est un bon exemple de code de comment j'ai obtenu ce travail:
Composant de Script 1: Actions, c'est d'entrée...
... puis le Script de la Composante 2 (qui consomme le Script de la Composante 1 de l'entrée)...
Le script est à la fois de partager une lecture/écriture de la variable appelée "Test" - vous pouvez changer le nom de la variable à la suite vos besoins. J'espère que le ci-dessus sert comme un modèle de travail pour vous de prendre cela au niveau suivant.
PS:- Si vous avez le temps & de l'énergie, de l'écriture d'un bon personnalisé SSIS composant est vraiment la voie à suivre pour plusieurs scénarios d'entrée.
OriginalL'auteur Mark