IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SSIS Discussion :

[SSIS][2K5] Package commun à tous les packages


Sujet :

SSIS

  1. #1
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut [SSIS][2K5] Package commun à tous les packages
    Bonjour,

    J'ai créé plusieurs packages réalisant des traitements différents, mais j'aimerai centraliser la gestion des erreurs de mes traitements et créer un package commun que j'appellerai pour cette gestion des erreurs.

    Ainsi dans un flow (contrôle ou data), si un erreur est détectée, je souhaiterai appeler un package Erreur auquel je passerai un certainement nombre de paramètres déterminé et ce package écrirait, par exemple, dans un fichier ou dans un BD afin de logguer l'erreur et les paramètres associés.

    Comment faire pour créer ce "package" (ou autre) commun ? Est-ce possible ? Auriez vous une idée ?
    Merci de votre aide !!!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    Bonjour,
    J'ai déjà fait ça. j'ai un seul dtsx que j'appelle de partout pour enregistrer les messages d'erreurs dans une table.

    --> Création du package SSIS dédié au log :
    Dans ce package, créés par exemple 4 variables : code_erreur, description_erreur, nom_package_parent, date_execution..etc. Ces variables vont recevoir les valeurs à partir des autres packages appelants. Donc, il faut les paramétrer dans le menu "Packages de Configuration". (choisis le type "Parent Package Variable" pour "Configuration type").

    --> Les autres packages :
    Il faut créer les mêmes variables avec mes mêmes noms et les mêmes types. Utilise les fonctions systèmes pour récupérer les codes et les messages d'erreurs dans la propriété expression de chaque variable.
    Ensuite dans l'onglet "Event Handlers" et sur l'événement "OnError", ajoute un composant qui appelle un package ("Execute Package Task") et tu le pointes sur le package dédié au log. Le passage des paramètres se fera automatiquement.

    Voilà, j'espère que j'ai été clair dans mon résumé. N'hésite pas à poser d'autres questions en cas de Pb.

  3. #3
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    Merci pour ta réponse...

    Mon idée de départ serait de logguer les différentes étapes de mon dataflow et en particulier de catcher les erreurs pour envoyer par email les infos stockées dans des variables du module du data flow qui s'est planté. Cela nécessite d'ajouter un script avant chaque module du data flow pour changer la valeur des variables.

    J'ai bon jusque là ?

    Sinon, comme la solution que j'ai décrite précédemment ne paraît pas envisageable car trop lourde, j'ai pensé limiter mon log au control flow. Lorsqu'un contrôle flow est exécuté, je suppose que les modules du data flow sous-jacents renvoient, en cas de plantage, une erreur explicite au control flow ? Comment la récupérer ?

    En tous cas, merci beaucoup pour ton aide !!!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    Bonjour,
    Oui, si un data flow tombe en erreur le control flow tombera en erreur aussi.
    Pour la gestion d'erreur. Dans l'onglet de gestionnaire des évènements "Event Handlers", crée une ou plusieurs variables. Ensuite dans les propriétés "Expression" de ces variables, utilise les fonctions systèmes suivantes :
    @[System::ErrorDescription] : renvoie le message d'erreur SSIS
    @[System::ErrorCode] : le code de l'erreur
    @[System:ackageName] : le nom du package
    ...etc

    Cdt

  5. #5
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    OK... merci !!!
    Après moultes et moultes recherches, je suis tombé sur le Logs Provider qui permettrait à priori de gérer la trace et le log d'erreur sans que je doive ajouter des tonnes de modules de script pour logguer mes traces et mes erreurs...

    Dans le Log Provider est-il possible d'ajouter d'autres champs (notamment des messages "personnalisés", des variables utilisées dans les dataflow etc etc) ?

    Merci beaucoup de ton aide !!!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    Effectivement il y a aussi une autre manière à laquelle je n'ai pas pensé (dzlé) pour choper les logs en utilisant Log Provider.
    Je pense que ce n'est pas possible d'ajouter des champs et des messages personnalisés dans Log Provider...

  7. #7
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    Et sinon, il y aurait apparemment encore une autre solution pour pouvoir gérer nos erreurs et traces comme on le souhaite sans être dépendant du langage imbitable du Log Provider, il s'agit de l'Event Handler.

    Apparemment l'event handler se crée de la même façon qu'un control flow... Ce qui est plutôt sympathique. Par contre, l'idée serait pouvoir partager, entre toutes les applications le MÊME Event Handler. Est-ce possible ?

    j'avais pensé créer un package (que j'appelle GestionTraceErreur.dtsx) et je voulais dans tous mes packages utiliser GestionTraceErreur au niveau de l'Event Handler. Est-ce possible ? et sinon comment faire ?

    Merci beaucoup !!!

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    Oui, c'est ce que j'ai expliqué dans ma toute première réponse à ton message

  9. #9
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    En effet, mais à ma décharge, je ne manipule SSIS que depuis quelques jours...

    Sinon, nous avons décidé de faire autrement... C'est peut être une solution que tu ne connais pas (j'ai dit peut être!!!). Nous allons créer notre propre composant de DataFlow et de Controle Flow qui permettra de gérer nos cas d'erreur et nos traces de façon identiques...

  10. #10
    j6m
    j6m est déconnecté
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Points : 84
    Points
    84
    Par défaut même problême
    Bonjour, je suis un peu dans la même situation : je cherche à loguer en base et sur le disque les infos "démarrage", "fin", "erreur" de mes traitements.
    J'ai donc créé un package pour ça, et je me suis résigné à l'idée de déclarer les variables utilisées par mon package de trace à chaque nouveau package, sans même pouvoir faire de copier/coller.

    J'utilise le gestionnaire d'évènements mais je ne parviens pas à faire en sorte qu'il ne s'exécute qu'une seule fois.
    Mon package contient deux tâches => il y a deux évènements "OnPreExecute" et donc j'ai deux lignes à chaque fois. Ce n'est pas ce que je veux, je voudrais une seule ligne pour l'exécution du package.
    Si comme je le crains ça n'est pas possible, je me suis dit que j'allais tracer chaque tâche en passant à mon package de trace le nom de la tâche et pas celui du package (une ligne pour "début tache 1", une pour "début tache 2" etc.). Malheureusement la variable System::TaskName n'est pas accessible au niveau du package et j'ai des erreurs de validation.

    Je suis moi aussi nouveau sous SSIS, et pas assez pointu en programmation pour m'approprier la solution proposée sur le site donné par Grinder.

    Que puis-je faire pour avoir l'un des deux résultats?

    Merci
    quand la pierre tombe sur l’œuf, malheur à l’œuf
    quand l’œuf tombe sur la pierre, malheur à l’œuf

  11. #11
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    Bonjour à tous,

    Je découvre également SSIS et je cherche également à tracer l'éxécution des des taches de mon packages.
    L'idéal est de tracer les étapes du traitement dans un fichier extern.

    Je vois bien l'onglet gestionnaires d'evenement mais je ne sais pas comment l'utiliser pour tracer l'avancement de l'execution de mon package dans un fichier.

    Auriez-vous un coup de main à donner pour cette tache.

    Merci

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/05/2009, 09h03
  2. Package.getPackages() ne renvoie pas-t-elle tous les packages ?
    Par Chatbour dans le forum Général Java
    Réponses: 10
    Dernier message: 29/09/2008, 17h03
  3. [F9] eliminer tous les package d'un certain repos
    Par olivier57b dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 06/08/2008, 14h46
  4. [SSIS][2K5] Pb d'execution de packages
    Par geof dans le forum SSIS
    Réponses: 3
    Dernier message: 25/03/2008, 16h29
  5. Comment disposer tous les packages .deb
    Par Jean_Benoit dans le forum Debian
    Réponses: 8
    Dernier message: 16/03/2006, 21h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo