2009-06-16 9 views
1

Quelle est la meilleure façon de concevoir un package SSIS? Je charge plusieurs dimensions et faits dans le cadre d'un projet. Serait-il préférable de:Conception de packages SSIS

  1. Avoir 1 paquet et 1 flux de données avec toutes les données extraire et charger la logique dans 1 flux de données?
  2. Avoir 1 paquet et plusieurs flux de données avec chaque flux de données prenant la logique pour 1 dimension?
  3. Vous avez 1 paquet par dimension, puis un package principal qui les appelle tous?

Après avoir fait quelques recherches 2 et 3 semble être des options plus viables. Des experts qui veulent partager leur expérience et/ou proposer une alternative?

Répondre

2

Microsoft Project Real est un excellent exemple de beaucoup de nombreuses bonnes pratiques:

  • Design Package et Config pour la modélisation dimensionnelle
  • journalisation des packages
  • Cloisonnement

Il est basé sur SQL 20 05 mais est très applicable à 2008. Il supporte votre option # 3.

+0

C'est l'option de conception que nous avons fini par utiliser et la documentation est un excellent exemple de meilleures pratiques. – CTKeane

+0

Je l'ai trouvé pareil. Bonne chance! –

2

Vous pouvez également envisager d'avoir plusieurs packages appelés par un travail SQL Server Agent.

+0

+1 de cette façon vous donne beaucoup plus de flexibilité (en particulier en cas d'erreur/bugs) – dkarzon

0

Je pense que la réponse n'est pas aussi claire ... De la même manière qu'il n'y a souvent pas de "meilleur" design pour un DWH, je pense qu'il n'y a pas de "meilleure" méthode d'emballage.

Cela dépend beaucoup du nombre de dimensions et du nombre de dimensions associées ainsi que de la structure des données dans votre zone de transfert. Je suis tout à fait d'accord avec les approches Project Real (mentionnées ci-dessus), surtout que la consignation des paquets était plutôt bien faite. Je pense que j'ai lu quelque part que Denali (SQL 2011) aura SSIS logging/suivi intégré, mais pas sûr des détails. D'un point de vue d'appel, j'irais pour un travail d'agent SQL, qui appelle un paquet maître qui appelle alors tous les paquets enfants et gère la gestion des erreurs/logique/emailing entre eux, en utilisant des tables Log/Error pour suivre et gérer le flux du paquet. SSIS autorise des ensembles de logique beaucoup plus complexes que l'agent SQL (par exemple appelez ce package enfant si toutes les tâches A et B et C sont terminées et non la tâche D)

De plus, je choisirais un paquet par dimension Snowflaked, comme généralement à partir des données de transfert, une table source génère un certain nombre de dimensions floconnées (par exemple, DimProduct, DimProductCategory, DimProductSubCategory). Il serait logique que les données soient lues une fois dans la tâche de flux de données (DFT) et écrites dans plusieurs tables. J'utiliserais un conteneur par dimension pour la séparation de la logique.

Questions connexes