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

Développement SQL Server Discussion :

[2008R2] Liaison Oracle - Requête SQL


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12
    Par défaut [2008R2] Liaison Oracle - Requête SQL
    Bonjour à tous,

    J'ai un petit soucis sous sql server 2008R2 pour faire une requête sous un un serveur oracle.

    Ma requête est faite sous toad, et fonctionne.

    Mon but serai de créer une table contenant le résultat de ma requête sous sql server.

    Déjà, j'essaye de faire la requête sélection ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM 
    OPENQUERY(SEVEURoRACLE, "Requête sql oracle") ;
    Le soucis, c'est qu'il me sort un problème de longueur de requête ... Celle ci faisant 720 caractères ...

    Qui aurai une idée ?

    Merci d'avance !

    CG

  2. #2
    Invité
    Invité(e)
    Par défaut
    Et avec cette syntaxe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM 
    OPENQUERY( "MACHINE_ORACLE", 'select * from dual')

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12
    Par défaut
    Bonjour !

    J'y avait penser ... Seul soucis, c'est la taille de la table dans oracle ... plus de 250Gb ...

    En plus, cette table oracle possède une architecture en "arbre" je crois. Sachant que dans ma requete oracle, je fais un tri ...

    Voici la requête :

    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
    SELECT 
        DI1.DEM_ID,
        DI1.DI_VALUE AS CLIENT,
        DI2.DI_VALUE AS STATUT,
        DI3.DI_VALUE AS CONTRAT,
        DI4.DI_VALUE AS ID
     
    FROM
    ( 
        (ORACLE.DEMANDES DI1 
            JOIN
        ORACLE.DEMANDES DI2
            ON
                DI1.DEM_ID = DI2.DEM_ID)
            JOIN
        ORACLE.DEMANDES DI3
            ON
                DI1.DEM_ID = DI3.DEM_ID)
            JOIN
                ORACLE.DEMANDES DI4
             ON DI1.DEM_ID = DI4.DEM_ID
    WHERE 
     
            DI1.DI_PARAM = '/client' and 
            DI1.DI_VALUE like 'XXX%' AND
            DI2.DI_PARAM = '/status' AND
            DI3.DI_PARAM = '/id_commande' AND
            DI4.DI_PARAM = '/IDGEN';
    Par exemple, pour un même ID, on a plusieurs paramètres avec différentes valeurs. Donc j'ai 4 liaisons sur cette table, avec donc trois jointures. Via toad, j'ai une exécution en un peu plus de 2 minutes ...

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Commencez déjà par améliorer votre requête, utilisez la méthode décrite dans ce sujet :
    http://www.developpez.net/forums/d10...l/#post5959473

    Si c'est un problème de longueur de requête, vous pouvez toujours créer une vue sur Oracle et faire un select sur celle-ci depuis SQL-Server.

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Votre requete vous renvoie une seule ligne par DEM_ID ?

    que donne celle-ci (qui est "Waldar certified" EDIT : lequel a posté entretemps...) niveau perf ?

    Code SQL : 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
     
    SELECT 
        DEM_ID,
        MAX(
            CASE 
                WHEN  
                    DI_PARAM = '/client' 
                    AND DI_VALUE LIKE 'XXX%' 
                THEN DI_VALUE 
            END 
        ) AS CLIENT,
        MAX(CASE WHEN DI_PARAM = '/status' THEN DI_VALUE END) AS STATUT,
        MAX(CASE WHEN DI_PARAM =  '/id_commande' THEN DI_VALUE END) AS CONTRAT,
        MAX(CASE WHEN DI_PARAM =  '/IDGEN' THEN DI_VALUE END) AS ID
    FROM
        ORACLE.DEMANDES 
    WHERE 
         DI_PARAM IN ('/client', '/status','/id_commande', '/IDGEN')
    GROUP BY DEM_ID

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Bien vu aieeeuuuuu

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12
    Par défaut
    Merci pour la requête oracle, c'est de l'optimisation.

    Effectivement la requête est trop longue ... Le hic c'est que je ne suis pas admin de la base oracle, et demander une vue est chose longue, j'ai déjà essayer et abandonné vu les procédures qu'on me demande... C'est pour ça que je voulais utiliser la méthode serveur lié.

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

Discussions similaires

  1. [Oracle] accents oracle requête sql/php
    Par falco- dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/10/2008, 13h40
  2. [D7/ORACLE] Requête SQL et exception EDBEngineError
    Par LHT dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/11/2007, 15h30
  3. [ORACLE] Requête SQL
    Par pier* dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/05/2006, 11h55
  4. [SQL Oracle] Requête complexe
    Par lapartdombre dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/11/2005, 14h31

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