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 :

Erreur d'exécution d'un lot SSIS: violation de Primary key


Sujet :

SSIS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut Erreur d'exécution d'un lot SSIS: violation de Primary key
    Bonjour,
    J'ai besoin de votre aide pour déboguer mon agent SQL Server qui me renvoi à chaque fois une duplication de ligne dans mon fichier.

    En effet, j'ai un package SSIS qui alimente une table avec les étapes suivantes:
    - Troncation de ma table de fait (T_FACTURATION_VENTES)
    - chargement de la table ODS
    - Suppression des lignes de la table de fait (F_FACTURATION_VENTES)
    - Chargement de la table de fait F_FACTURATION proprement dite
    Lorsque j'exécute mon lot SSIS sous Visual Studio, il marche sans problème; mais lorsque je l'exécute avec l'agent SQL SERVER de manière automatique, il me renvoi l'erreur suivante:

    " Violation de la contrainte PRIMARY KEY PK_FACTURATION_VENTES; impossible d'insérer une clé en double dans l'objet FAIT_FACTURATION_VENTES".
    En 2012,tout marchait très bien lorsque, au niveau de la suppression, on avait mis la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "DELETE FROM [NOM_SERVER].[FAIT].[F_FACTURATION_VENTES]
     WHERE ID_DATE_FACTURE>year(DATEADD(year,-1,GETDATE()))*10000+101"
    En 2013, J'ai remplacé le -1 par -2 et c'est la où tout ne marche plus sous l'Agent SQL SERVER.

    Puis-je avoir votre aide SVP?
    Merci de votre retour.

  2. #2
    Membre Expert Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Par défaut
    Euh rien à voir avec une question d'agent, c'est plus la mécanique d'alimentation qui est à revoir non? L'agent doit schéduler le job avec potentiellement des paramètres (voir le panneau "Valeurs définies" de la step ou le fichier de configuration) qui expliquent que les données soient doublonnées?

  3. #3
    Membre expérimenté Avatar de arnaudvoisin
    Homme Profil pro
    Consultant BI chez WAISSO
    Inscrit en
    Janvier 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant BI chez WAISSO

    Informations forums :
    Inscription : Janvier 2007
    Messages : 156
    Par défaut
    Comme l'a dit François, ton problème ne vient pas directement de ton job agent ou de la step de ton job.

    La seule chose qu'il faut que tu vérifies dans l'agent versus ton BIDS c'est que ton package est appelé avec la même configuration ou les mêmes valeurs de variables.

    Après avoir vérifié ce point, tu peux écarter définitivement l'hypothèse du problème dans l'agent et te concentrer sur tes données.

    Ta violation de la contrainte de clé primaire peut avoir 2 causes :
    1. La première tu as des valeurs identiques sur la clé entre les données de la table dans laquelle tu insères et les données que tu veux insérées.
    2. Où bien tu as clairement des doublons au seins même des données que tu essaies de charger en bulk.


    Dans un but de debugging, tu pourrais très bien passer ta destination en chargement ligne à ligne et récupérer les rejets ne vérifiant pas ta contrainte dans un CSV ou une table afin de comprendre l'origine des doublons qui génère l'erreur.

    Si tu es dans le cas n°2, tu peux tous simplement faire une requête pour détecter les doublons à base de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT *
    FROM MaTable T1
    WHERE 
           EXISTS (
                  SELECT 1
                  FROM MaTable T2
                  WHERE 
                           T2.Colonne1delaPK=T1.Colonne1delaPK
                     AND T2.Colonne2delaPK=T1.Colonne2delaPK
                  GROUP BY T2.Colonne1delaPK,T2.Colonne2delaPK -- and so on ....
                  HAVING COUNT(*)>1
    )
    J'espère t'avoir aidé.

    Arnaud VOISIN
    Consultant BI chez WAISSO | MCITP - SQL SERVER 2008 BI
    http://arnaudvoisin.blogspot.fr/
    http://www.waisso.com/

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Par défaut
    Bonjour,
    Merci de votre retour.
    J'essaye de me pencher plus sur vos conseils et je fait un retour par la suite.

    Très Cordialement,
    Marcel Cyrille LAMENU
    Consultant junior BI

Discussions similaires

  1. [2012] MERGE - Violation of PRIMARY KEY constraint
    Par vinch999 dans le forum Développement
    Réponses: 2
    Dernier message: 21/01/2015, 10h35
  2. Réponses: 2
    Dernier message: 21/10/2014, 15h44
  3. Lot DTS : Erreur d'exécution
    Par Hamdi dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 16/09/2010, 09h13
  4. Violation of Primary Key sans données
    Par Baquardie dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 26/01/2010, 19h41
  5. Violation of PRIMARY KEY constraint
    Par DEV-10 dans le forum Développement
    Réponses: 6
    Dernier message: 30/11/2009, 15h01

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