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] Comment mettre un package en erreur par exemple si une condition est fausse ?


Sujet :

SSIS

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut [SSIS] [2K5] Comment mettre un package en erreur par exemple si une condition est fausse ?
    Bonjour,

    J'ai un Flux SSIS où je réalise des transformations. J'utilise le composant Nombre De Lignes pour compter les lignes extraites et pour compter les lignes insérées en fin de transformation. J'arrive à arrêter le flux quand il y a une différence mais pas à mettre le package en erreur.

    Comment mettre un package en erreur par exemple si une condition est fausse ?

    a+, =)
    -=Clement=-

    Configuration :
    BIDS 2005

  2. #2
    Membre expérimenté

    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    690
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 690
    Points : 1 478
    Points
    1 478
    Par défaut
    Salut,
    Je pense que tu peux jouer sur le statut de tes packages avec le composant script.
    On voit qu'il finit toujours par Dts.Success, tu peux creuser de ce coté la.
    Désolé mais je n'en sais pas plus, c'est juste une piste

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Bonjour,

    Pour le moment, voici ce que j'ai trouvé :
    -si on veut que le package parte en erreur si un champ numérique vaut zéro, ajouter une colonne dérivée avec pour Expression, 1/ [MonChamp]

    Je laisse la question ouverte pour les autres cas de test.

    a+, =)
    -=Clement=-

    Configuration :
    BIDS 2005
    Windows XP 32b SP3 Pro

  4. #4
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 757
    Points : 2 992
    Points
    2 992
    Par défaut
    Je rejoins ygrim. Tu pourrais diriger ton flux vers un Script task qui renverrait un Dts.Results.Failure. Pour la redirection, tu pourrais utiliser une contrainte sur la jointure; contrainte de type Expression et là, tu coderais comme test le fait que ta variable soit égale à zéro.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 572
    Points : 341
    Points
    341
    Par défaut
    Bonsoir,

    Si on veut partir en erreur si une condition donnée est fausse on peut aussi faire une Derived Column avec pour Expression :
    1 / ((<condition>) ? 1 : 0)

    Par exemple 1/((@Foo==@Bar) ? 1 : 0) provoquera l'arrêt du package avec erreur quand Foo sera différent de Bar.

    a+, =)
    -=Clement=-

    Configuration :
    BIDS 2005

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Je rejoins ygrim. Tu pourrais diriger ton flux vers un Script task qui renverrait un Dts.Results.Failure. Pour la redirection, tu pourrais utiliser une contrainte sur la jointure; contrainte de type Expression et là, tu coderais comme test le fait que ta variable soit égale à zéro.
    Comment fait on pour qu'un Dts.Results.Failure soit pris en compte?
    Dans mon code je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If (maCondition)) Then
           TaskResult = Dts.Results.Failure
           Return
    End If
    le resultat est:
    SSIS package "monProg.dtsx" starting.
    Error: 0x4 at maTask: The Script returned a failure result.
    Task failed: maTask
    SSIS package "LogsLegaux.dtsx" finished: Success.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 265
    Points : 314
    Points
    314
    Par défaut
    Par défaut, ton erreur devrait se propager sur les autres composants qui englobent ton script pour finalement mettre ton package en échec.

    Si ce n'est pas le cas, c'est que les propriétés de ton script et/ou d'un des composants parents et/ou de ton package ont été modifiées.

    Tu devrais donc regarder les propriétés du type FailPackageOnFailure, FailParentOnFailure, ForceExecutionResult sur ces éléments.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SSIS] [2K5] mettre un package en erreur
    Par Smokiest dans le forum SSIS
    Réponses: 1
    Dernier message: 07/05/2009, 14h22
  2. Réponses: 1
    Dernier message: 17/04/2009, 17h56
  3. Réponses: 1
    Dernier message: 18/12/2008, 11h49
  4. Réponses: 0
    Dernier message: 16/06/2008, 11h28
  5. [SSIS][2k5] Comment acceder aux variables
    Par tchraad dans le forum SSIS
    Réponses: 3
    Dernier message: 20/03/2008, 15h26

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