2017-08-18 6 views
-1

J'ai plusieurs tables d'archivage qui stockent des types de données similaires dans ces tables, mais archivées au format mois. Maintenant, l'exigence est d'obtenir toutes les données archivées dans une table au lieu de plusieurs tables.Priorité à l'insertion en bloc dans une table à l'aide de Union all in ssis

Je fais cette activité avec l'aide de Union tout dans SSIS, mais il semble qu'il prend une insertion aléatoire dans la table de destination.

Attacher est la route empruntée pour la transformation.

enter image description here

Je veux donner la priorité à l'insertion, s'il vous plaît suggérer!

+1

Pas clair. Que voulez-vous dire par «prendre des insertions aléatoires» et comment voulez-vous le prioriser? –

+0

sauf si vous devez échouer et restaurer l'ensemble du processus si une partie échoue, je suggérerais d'aller avec des tâches de flux de données distinctes plutôt que d'utiliser tous les syndicats. Vous pouvez ensuite identifier la priorité/le flux entre les tâches et choisir l'ordre dans lequel elles doivent être exécutées. Avantage supplémentaire si vous pouvez créer un jeu d'enregistrements des noms de fichiers puis vous pouvez configurer une boucle et utiliser le même flux de données .... finalement l'ordre d'insertion ne devrait pas importer en sql car le moteur DB optimisera pour le stockage basé sur les index et la définition de table pas aligner la position ordinale de l'insert – Matt

Répondre

0

Vous pouvez ajouter une colonne supplémentaire "Priorité" à chacune des sources OLE DB avec la priorité correspondante pour chaque source, puis après l'union, vous pouvez ajouter un composant de tri qui trie les données par priorité. Mais si vous avez beaucoup de données - ce serait vraiment inefficace car le composant de tri attendra que toutes les données sources soient lues.

Je vous suggérerais d'écrire une instruction SQL source correcte qui effectue le tri/union/priorisation/tri pour vous puis l'insérer dans la cible.

De même, si les sources se trouvent sur des serveurs différents, vous pouvez créer un conteneur de boucles Foreach qui parcourra les tables sources et les insèrera toutes dans la table cible. Vous pouvez utiliser this article pour la référence.