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] OleDb - Tables qui n'ont pas encore été créées


Sujet :

SSIS

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut [SSIS] [2K5] OleDb - Tables qui n'ont pas encore été créées
    Bonjour,

    J'ai un problème sur un script : celui-ci doit alimenter des tables sous SQL Server avec des données. Si les tables n'existent pas, il doit aussi les créer.

    Pour cela, j'utilise un objet "Execute SQL Task" pour tester l'existence des tables et les rajoute dans la base si elles n'existent pas.

    Ensuite, un peu plus loin dans le script, j'alimente ces tables à partir d'un objet "OLE DB Command" (à l'aide d'une requête SQL qui prend en paramètre les données).

    Le problème, c'est que si les tables n'existent pas dans la base de données, j'ai des messages d'erreur lorsque je tente de configurer l'objet "OLE DB Command". Et même si je met sur False la propriété "ValidateExternalMetadata", le script plante lors du lancement. Or, l'objectif est justement d'éviter ça en recréant les tables manquantes...

    Quelqu'un sait comment on peut empêcher SSIS de vérifier la présence de ces tables avant d'exécuter le script ?

    Ou à défaut, de s'arranger pour qu'il ne vérifie l'existence des tables qu'au moment d'insérer des données dedans ?

    J'aimerai si possible utiliser les objets "OLE DB Command" ou "OLE DB Destination" afin d'éviter d'avoir à tout coder dans un objet "Script".

    Merci pour l'aide !

  2. #2
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut
    Bonjour,

    Pour éviter que l'OLEDB Command ne plante lors de sa config, tu peux laisser la propriété SQL Command vide et passer la requête via la les attributs Expression du data flow (l'attribut c'est [nomDeLobjetOledbCommand].[SqlCommand])

  3. #3
    Membre habitué

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    j'ai fait la même chose avec une "OLE DB Destination" et je dois effectivement avoir les tables créées dans ma base, je ne pense pas que tu puisses faire autrement...

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Merci.

    Le problème sur les objets "OLE DB Command" est corrigé, mais maintenant, c'est un objet "OLE DB Source" plus loin qui pose problème...

    Par contre, je ne peux pas configurer la propriété SqlCommand depuis la partie expression pour lui. Je trouve ça bizarre que l'on ne puisse pas faire cette modification...

  5. #5
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut
    On peut également spécifier une requête à un OLEDB Source via une variable. Pour cela, on ne passe pas par les Expression mais on sélectionne SQL Command From Variable dans le Data Access Mode de ton OLEDB Source. Je sais pas si je réponds à ta question?

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Effectivement, la requête peut être passée dans une variable. Malheureusement, même dans ce cas, SSIS couine si celle-ci fait référence à une table inexistante dans la base.

    En plus, la requête fait une cinquantaine de lignes, pas très pratique à mettre dans une variable.

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Finalement, l'utilisation de la propriété DelayValidation dans mon script corrige le problème pour les objets "Data Flow Task".

    En la mettant à "True" sur les objets utilisant les tables créées dans le script, celui-ci ne plante plus au lancement.

    Merci pour le coup de main !

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

Discussions similaires

  1. [XL-2010] Lister les fichier d'un répertoire qui n'ont pas encore été listés
    Par QuestVba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2014, 10h03
  2. copier le contenu de deux tables qui n'ont pas la meme BDD
    Par kroma23 dans le forum Bases de données
    Réponses: 7
    Dernier message: 24/02/2009, 21h03
  3. afficher les tables qui n'ont pas de correspondance
    Par eye2909 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/10/2008, 09h44
  4. [TV] A voir pour ceux qui n'ont pas encore vu :p (Les lascars)
    Par Interruption13h dans le forum Films & TV
    Réponses: 7
    Dernier message: 26/06/2007, 14h29
  5. Réponses: 3
    Dernier message: 21/11/2006, 18h26

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