2017-07-05 3 views
0

Je cherche des alternatives pour trier ~ 2 millions d'enregistrements sur SSIS. Données provenant de sources hétérogènes (SQL, Oracle, DB2) après l'application de la transformation multiple, il existe un ensemble Union pour combiner les données et doit ensuite être trié par trois champs.SSIS Trier les grandes données à partir de sources hétérogènes - Alternatives

En effet, les données doivent être triées par certains champs avant que nous avons envoyé au fournisseur externe

Ce sont les solutions que j'ai déjà essayé:

  • taille de la mémoire tampon (100 Mo) et les lignes Max réglage (50K lignes)
  • de tri appliquée à chaque source (juste pour le plaisir de mon esprit!)
  • Set Valider la propriété de métadonnées externes False (pour Trans Trier)
  • Trie d tâche de script (tri C#)

Aucune de ces performances significativement améliorées.

Existe-t-il d'autres alternatives?

Mise à jour: Il s'agit d'un tri par chaîne sur trois champs différents appartenant à trois tables DB différentes (SQL, Oracle, DB2). Je ne peux pas trier jusqu'à ce que l'ensemble de données soit combiné.

  • sortie de chargement Essayé à une seule table et utilisé Trier par l'indexation appropriée - Cela donne un résultat inattendu ordre SQL par se comporte différemment Trier Transformation Here is the explanation
+1

Pourquoi avez-vous besoin de trier? Pour une opération ultérieure dans SSIS? Veuillez noter ces deux points: 1. Les bases de données ne stockent pas dans l'ordre trié. Ils stockent l'ordre indexé en cluster. 2. Les bases de données ne retournent pas dans l'ordre stocké ou inséré, elles retournent dans l'ordre 'ORDER BY'. Vous pourriez essayer de tout charger dans une seule table et trier, mais quel est le point - pourquoi trier? –

+1

Essayez de les insérer non triés dans une table indexée sur vos champs de tri, puis sélectionnez-les dans cette table avec un ORDER BY. –

+0

@ Nick.McDermaid Les données doivent être triées par certains champs avant d'être envoyées au fournisseur externe. Je reçois les résultats attendus grâce à la transformation de tri uniquement, la commande par n'est pas comme prévu. Veuillez vous référer à la mise à jour – SanjayJ

Répondre

0

Utilisez une transformation MERGE au lieu de UNION ALL: Au lieu d'utiliser un UNION ALL au lieu d'utiliser un UNION ALL pour combiner les ensembles de données en premier, puis de trier le grand ensemble de données résultant, il est préférable de trier d'abord chaque ensemble plus petit, puis d'utiliser un MERGE tr ansformation. Le résultat de la transformation MERGE sera déjà trié.

+0

Il s'agit d'un tri par chaîne sur Trois champs différents appartenant à trois tables DB différentes (SQL, Oracle, DB2). Je ne peux pas trier jusqu'à ce que l'ensemble de données soit combiné. – SanjayJ