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

MS SQL Server Discussion :

[Lot DTS] Transformation de données


Sujet :

MS SQL Server

  1. #1
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut [Lot DTS] Transformation de données
    Bonjour,

    Sous Enterprise manager v8 (SQL server 2000), j'utilise un lot DTS.

    Dans ce lot, j'ai un lien ODBC (qui se connecte sur un AS400) dont j'ai transformée les données, pour que ces données soit sous SQL server.

    Mais dans ma requête de l'AS400, je voudrais passer en paramètre une variable.
    Dans les priorités de la transformation de données, il y a un onglet recherche mais je ne sais pas comment récupérer ces données pour l'exploiter.

    J'espère avoir été clair

    PS: J'ai mis un imprime écran pour situer un peu.

    Merci
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    De mémoire, vous devez procéder en 2 temps :

    Dans votre tâche de connexion et dans l'onglet source vous devez créer votre requête de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM dbo.maTable WHERE col1 = ?
    Ensuite vous avez un bouton paramètre juste en bas qui vous permet de définir une variable globale en guise de paramètre.

    ++

  3. #3
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut
    Alors oui effectivement, cela fonctionne dans le cas où la variable possède 1 seul enregistrement mais quand c'est un ensemble de valeurs?

    C'est peut être ma requête qui n'exploite pas le paramètre d'entrée avec un ensemble de valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM f4211
    WHERE sddeln IN (?)
    Images attachées Images attachées  

  4. #4
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Citation Envoyé par afrodje Voir le message
    Alors oui effectivement, cela fonctionne dans le cas où la variable possède 1 seul enregistrement mais quand c'est un ensemble de valeurs?

    C'est peut être ma requête qui n'exploite pas le paramètre d'entrée avec un ensemble de valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM f4211
    WHERE sddeln IN (?)
    Je n'utilise pas les lots DTS (200), mais en 2005 (est-ce valable en 2000), il est possible de variabiliser l'ensemble de la requête. Dans ce cas on peut construire la requête complète, sans paramètre et avec un "in ...", la liste des paramètre se trouvant elle même dans la variable, ou une autre si cela doit être modifié à la volée.

    Le forum BI sera peut-être plus adéquat pour ce genre de question

  5. #5
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut
    Citation Envoyé par Jinroh77 Voir le message
    Je n'utilise pas les lots DTS (200), mais en 2005 (est-ce valable en 2000), il est possible de variabiliser l'ensemble de la requête.
    Je ne suis pas un pro de SQL server 2000 mais je ne pense pas que cela est possible.

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Non cela n'est possible avec les lots DTS de SQL Server 2000.

    Cependant vous pouvez passer dans ce cas par une procédure stockée avec une requête SQL dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE PROCEDURE pr_test
    (
     @valeurs VARCHAR(100)
    )
    AS
     
    EXEC('SELECT * FROM base.dbo.test WHERE id IN (' + @valeurs + ')')
    Dans votre lot DTS vous devrez mettre à la place de votre requête le code la procédure stockée avec un exemple de valeurs

    Cela vous permettra de gérer votre mapping de colonnes sans erreur.

    Ensuite il faudra modifier votre procédure stockée en mode déconnecté.
    (Menu Lot > Mode déconnecté)

    Il suffit de modifier la valeur de propriété SourceSQLStatement avec ...

    ... pour pouvoir prendre en compte votre paramètre que vous aurez défini en variable globale

    Enfin il suffit d'enregistrer le tout et de tester votre lot (avec dtsrunui.exe) par exemple qui vous permettra d'initier votre paramètre.

    ++

  7. #7
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut
    J'avais déjà pensé à une procédure stockée mais cela ne peut fonctionner car ma requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM f4211
    WHERE sddeln IN (?)
    porte sur un lien ODBC sur l'AS400. Donc je ne peux l'associé à une PS.

    En faite, je dois passer en paramètre de la requete AS400 ( IN (?) ), plusieurs valeurs issu par contre de SQL server.

  8. #8
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Dans ce cas il faut passer par un serveur lié et utiliser le driver iSeries Access ODBC Driver de mémoire.

    Vous pourrez ensuite faire une requête distribuée du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE PROCEDURE ...
    AS
    SELECT col, col2 FROM [AS400].BIBLIOTHEQUE.SCHEMA.TABLE WHERE ...
    A vérifier au niveau de la syntaxe mais à peu de chose près c'est cela

    ++

Discussions similaires

  1. Utilisation d'un fichier de données dan un lot DTS
    Par ninsekh dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/08/2007, 16h40
  2. Réponses: 3
    Dernier message: 02/05/2007, 17h44
  3. Lancer un lot DTS dans une prodédure stockée
    Par Guizz dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/04/2007, 10h03
  4. [MaxDB] travaux et lots DTS
    Par nic_moq dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 19/03/2004, 09h47
  5. travaux et lots DTS
    Par nic_moq dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/03/2004, 18h00

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