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 :

Timeout en debug dans une tâche de script SSIS 2012


Sujet :

SSIS

  1. #21
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    J'ai testé, cependant le fait de faire une jointure me créée des doublons... Exemple : 5 commandes pour une livraison, je vais avoir 5 fois la même quantité livrée en face des 5 commandes... Il faudrait que j'arrive comme dans mon script à déduire dans ce cas là, les quantités commandées de la quantité livrée d'où l'histoire de reliquat....

    Une idée ?

  2. #22
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Citation Envoyé par Gobelink Voir le message
    Bonjour,

    J'ai testé, cependant le fait de faire une jointure me créée des doublons... Exemple : 5 commandes pour une livraison, je vais avoir 5 fois la même quantité livrée en face des 5 commandes... Il faudrait que j'arrive comme dans mon script à déduire dans ce cas là, les quantités commandées de la quantité livrée d'où l'histoire de reliquat....

    Une idée ?
    Heu c'est quoi des Commandes ? des échéances ????

    Fonctionnellement qu'es ce qu'un reliquat ???

    J'ai tendance a dire une agrégation , mais sans conviction (Voir question si dessus) , mais attention au composant Agrégat d'SSIS il est bloquant pour donc les perfs pas génial , le mieux est d'agréger les sources par un group By dans leur requêtes
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  3. #23
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Citation Envoyé par Gobelink Voir le message
    C'est une relation plusieurs à plusieurs ....

    N Livraisons ==> N Echeances

    J'ai essayé de passer par une variable locale mais je ne peux pas l'assignée à chaque passage..
    Je reviens la dessus pour être sur de n'avoir rien louper

    Donc 1 livraison est planifier par Plusieurs Échéance et une Échéance planifie plusieurs livraison c'est bien ça ?

    C'est pas par hasard => une livraison est planifiée par plusieurs Échéance et une échéance planifie une seule livraisons..... Après relecture de tes Scripts je me poste des questions .....
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  4. #24
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    Je résume :

    Une commande contient N Echéances (La clef dans FACTECHEANCES est N°Commande, N°Ligne de commande, N°Echeance) et 1 Echeance à 1 commande.

    Une commande à N Livraisons mais 1 Livraisons est liée à N Echéances de 1 commande (Pas de lien direct entre les échéances et les livraisons).

    Le lien entre les livraisons et les commandes c'est le N°Commande et le N°Ligne de commande.

    Le but est de déduire des échéances ce qui a déjà été livré.

    Dans mon script, je parcours les livraisons avec un GROUP BY sur le N°Commande et le N°Ligne de commande. Je parcours ensuite les échéances et compare les quantités :

    Qte_Echeance >= Qte_livree : Qte_Echeance = Qte_Echeance - Qte_Livree

    Qte_Echeance < Qte_livree : Qte_echeance = 0

    Donc le reliquat de la quantité livrée : Qte_livree - Qte_Echeance.

    C'est de ce reliquat que je parlais, il doit être affecté à l'échéance suivante, si une livraison concerne N echéance.

    C'est là où je bloque dans le flux, j'ai suivi tes conseils en implémentant ce flux :

    -Deux sources :

    1 : Requête des echeances regroupées par N°Commande, N°Ligne de commande
    2 : Requête des livraisons regroupées par N°Commande, N°Ligne de commande

    - Une jointure de fusion sur N°Commande, N°Ligne de commande
    - Une colonne dérivée qui me fait la soustraction, j'obtiens donc le reste à livrer d'une ligne de commande mais pas pour une échéance.

  5. #25
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    J'ai peut-être trouvé une solution, si j'ajoute à la suite une commande OLEDB qui fait un update sur la table en comparant le reste à livrer de la ligne de commande avec la quantité par echeances :

    Du genre :

    UPDATE FECTECHEANCE SET Qte_Echeance_restante = (CASE WHEN Qte_Echeance - Qte_Commande_Restant <= 0 THEN 0 ELSE Qte_Echeance - Qte_Commande_Restant)
    WHERE N_Commande = @N_Commande AND N_LigneCde = @N_LigneCde

    Ca pourrai fonctionner ?

  6. #26
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Effectivement la récusions que nécessite le reliquats est difficilement gérable en SSIS

    D'où mes questions a répétition sur la définition d'un reliquats

    le plus simple pour viré ton SCRIPT VSTA est de passer par une requette T-SQL De ce Type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    With EcheanceWithReliqua as(
    select 
    	e.[N°  Commande] as [N°Commande]
    	,E.[N° ligne Commande] as [N° ligne Commande]
    	,E.[N° echeance] as [N° echance]
    	, [Qt echeance] as [Qt echeance]
    	, [QT livree] as [QT livree]
    	,case 
    		When [Qt echeance] >= [QT livree] then [Qt echeance] - [QT livree]		else 0
    	end as qte
    	,Case 
    	     When [Qt echeance] >= [QT livree] then 0
    		else  [QT livree]- [Qt echeance]
    	end as reliquas
    	,ROW_NUMBER() Over(Partition by e. [N°  Commande]	,E. [N° ligne Commande] order by E. [N° echeance] ) As RowNum
    		
    From Echeance E
    inner join Livraison L
    on (E.[N°  Commande]=L.[N° Commande] and E.[N° ligne Commande]= L.[N° ligne Commande]))
    ,
    Recursion as
    (
    select * From  EcheanceWithReliqua
    Where RowNum = 1
    union All
    Select e.[N°Commande]
    	,E.[N° ligne Commande]
    	,E.[N° echance]
    	,E.[Qt echeance]
    	,E.[QT livree] 
    	,case 
    		When E.[Qt echeance] >= R.[reliquas] then E.[Qt echeance] - R.[reliquas]
    		else 0
    	end as qte
    	,Case 
    	     When E.[Qt echeance] >= R.[reliquas] then 0
    		else  R.[reliquas]- E.[Qt echeance]
    	end as reliquas
    	,E.RowNum
    	From Recursion R
    Inner Join EcheanceWithReliqua E
    on ( E.[N°Commande]=R.[N°Commande] and E.[N° ligne Commande]= R.[N° ligne Commande] and E.RowNum = R.RowNum +1 )
    )
    
    
    
    update Echeance 
    set [Qt echeance]=R.qte 
    From Echeance E 
    Inner Join Recursion R
    on (E. [N°  Commande] =R.[N°Commande] and E. [N° ligne Commande] = R.[N° ligne Commande] and E. [N° echeance] = R.[N° echance])

    Qui Doit être adapté a tes Structure de tables / Remplace ce qui en rouge par les bon champ ou les formules adéquate

    Avec la table Échéance qui correspond a ta table FACTECHEANCES et Livraison à DIMECHEANCES_LIVRAISONS
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  7. #27
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    Merci, je vais essayer ça. Je te tiens au courant ^^

  8. #28
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    J'atteint les limites de récursivité de SQL, j'ai une ligne de commande qui a plus de 100 livraisons oh my god !

    Merci pour cette requête cependant, elle va m'en inspirer d'autres

    Je continue les recherches avec SSIS ...

  9. #29
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    C'est de la livraison Optimisé !!!!

    le max Récusions à 100 c'est par défaut

    Utilise OPTION (MAXRECURSION NNN);

    ou NNN est Compris entre 0 et 32767 si 0 Pas de limite (Attention au boucle sens Fin)
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  10. #30
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Citation Envoyé par Gobelink Voir le message
    J'ai peut-être trouvé une solution, si j'ajoute à la suite une commande OLEDB qui fait un update sur la table en comparant le reste à livrer de la ligne de commande avec la quantité par echeances :

    Du genre :

    UPDATE FECTECHEANCE SET Qte_Echeance_restante = (CASE WHEN Qte_Echeance - Qte_Commande_Restant <= 0 THEN 0 ELSE Qte_Echeance - Qte_Commande_Restant)
    WHERE N_Commande = @N_Commande AND N_LigneCde = @N_LigneCde

    Ca pourrai fonctionner ?
    Malheureusement tu n'as pas la récursivité avec cette solution ! cela n'affecte que l'echeance encours pas les echeances suivantes ....
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  11. #31
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    Oui ^^, bon j'ai stoppé l'exécution de la requête au bout de 20 minutes je sait plus quoi faire là

  12. #32
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Citation Envoyé par Gobelink Voir le message
    Oui ^^, bon j'ai stoppé l'exécution de la requête au bout de 20 minutes je sait plus quoi faire là
    De quelle Requête ????
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  13. #33
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 28
    Points : 12
    Points
    12
    Par défaut
    De celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    WITH EcheanceWithReliqua AS(
    SELECT 
    	E.[VBELN_ECH] AS [N°Commande]
    	,E.[POSNR_ECH] AS [N° ligne Commande]
    	,E.[ETENR_ECH] AS [N° echance]
    	,[WMENG_ECH_ORI] AS [Qt echeance]
    	,[QTE_LIV] * E.[KPEIN_CDE] AS [QT livree]
    	,case 
    		When [WMENG_ECH_ORI] >= ([QTE_LIV] * E.[KPEIN_CDE]) then [WMENG_ECH_ORI] - ([QTE_LIV] * E.[KPEIN_CDE])
    		else 0
    	end AS qte
    	,Case 
    	     When [WMENG_ECH_ORI] >= ([QTE_LIV] * E.[KPEIN_CDE]) then 0
    		else  ([QTE_LIV] * E.[KPEIN_CDE]) - [WMENG_ECH_ORI]
    	end AS reliquas
    	,ROW_NUMBER() Over(Partition BY E.[VBELN_ECH]
    		,E.[POSNR_ECH] ORDER BY E.[ETENR_ECH]) AS RowNum
     
    FROM FACTECHEANCES E
    INNER JOIN DIMECHEANCES_LIVRAISONS L
    ON (E.[VBELN_ECH]=L.[VBELN_ECH] AND E.[POSNR_ECH]= L.[POSNR_ECH]))
    ,
    Recursion AS
    (
    SELECT * FROM  EcheanceWithReliqua
    WHERE RowNum = 1
    union ALL
    SELECT e.[N°Commande]
    	,E.[N° ligne Commande]
    	,E.[N° echance]
    	,E.[Qt echeance]
    	,E.[QT livree] 
    	,case 
    		When E.[Qt echeance] >= R.[reliquas] then E.[Qt echeance] - R.[reliquas]
    		else 0
    	end AS qte
    	,Case 
    	     When E.[Qt echeance] >= R.[reliquas] then 0
    		else  R.[reliquas]- E.[Qt echeance]
    	end AS reliquas
    	,E.RowNum
    	FROM Recursion R
    INNER JOIN EcheanceWithReliqua E
    ON ( E.[N°Commande]=R.[N°Commande] AND E.[N° ligne Commande]= R.[N° ligne Commande] AND E.RowNum = R.RowNum +1 )
    )
     
     
     
    UPDATE FACTECHEANCES
    SET WMENG_ECH_ORI = R.qte 
    FROM FACTECHEANCES E 
    INNER JOIN Recursion R
    ON (E.VBELN_ECH=R.[N°Commande] AND E.POSNR_ECH= R.[N° ligne Commande] AND E.ETENR_ECH= R.[N° echance])
    OPTION (MAXRECURSION 0)

  14. #34
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    OK

    Peux tu nous donner le code LDD des Tables FACTECHEANCES et DIMECHEANCES_LIVRAISONS avec index ? ainsi qu'un Jeux de donnée pour ces 2 tables ...
    Séverine Capon - Consultante MS BI
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Merci de dés que le commentaire vous a aidé ou de marquer si votre problème est résolu

  15. #35
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 19
    Points
    19
    Par défaut planification
    Bonjour !!
    Je sais que ça n'a rien avoir avec le sujet de la discussion =.
    Mais je veux bien exécuter un package SSIS à partir de sql server 2014 avec la source de données ORACLE mais il m'affiche cette erreur dts_e_cannotacquireconnectionfromconnectionmanager.Dans le but de réaliser une planification.
    je travail dans un environnement 64 bits.
    J'arrive pas à identifier le problème

Discussions similaires

  1. [2008R2] Pas de debug sur une tâche de script
    Par tim4info dans le forum SSIS
    Réponses: 2
    Dernier message: 04/05/2011, 08h58
  2. Réponses: 1
    Dernier message: 17/04/2009, 17h56
  3. [SSIS][2k5] Utiliser un DataReader dans une tâche de script
    Par franculo_caoulene dans le forum SSIS
    Réponses: 2
    Dernier message: 21/02/2008, 12h58
  4. PSEXEC dans une tâche "schedulée"
    Par ummvba dans le forum Windows
    Réponses: 1
    Dernier message: 15/06/2007, 13h37
  5. utilisation du JSP dans une page de script Javascript
    Par NikoBe dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 12/06/2007, 08h40

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