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 :

executer une requête à distance


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Par défaut executer une requête à distance
    Bonjour,

    Je souhaite executer une requete sur un serveur à distance.

    Je m'explique : je suis sur un serveur sqlserver qu'on appelera le serveur A, je voudrais executer une requete : ( update table1 set champ1=t2.champ1 from table1 t1 inner join table2 t2 on t1.champ2=t2.champ2) sur le serveur B.

    comment faire ?


    une solution serait de faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    update openquery(serveurB,'select champ1,champ2 from table1')
    set champ1=t2.champ1 from 
    openquery(serveurB,'select champ2 from table1') t1 
    inner join
    openquery(serveurB,'select champ1, champ2 from table1') t2 
    on t1.champ2=t2.champ2
    ce n'est pas bon du tout en terme de perf( quand les tables disposent de plus d'une centaine de milliers de lignes).
    ya t'il plus performant ?
    peut on faire un openquery(serveurB,'update patati patata') ???

    merci à tous.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut
    l'openQuery est une mauvaise idée car elle rapatrie toute ta table.

    Utilise plutôt un serveur lié pour faire ta requête sur tes deux serveurs, ce sera déjà beaucoup mieux.

    Par contre ne t'attends pas à des miracle... ça va être fatalement un peu long

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Hmm, c'est juste une supposition, mais si tu lance une procédure stockée du serveur distant, elle est exécutée là bas ?
    Dans ce cas, vu que toutes tes tables sont sur le serveur distant, pourquoi ne pas créer la procédure qui fait le tout et la lancer ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Par défaut
    Oui ta procédure sera exécuter sur le serveur distant. Donc si toutes tes tables sont sur le serveur distant ça peut être une solution

  5. #5
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Par défaut
    pourquoi ne pas travailler avec un linked serveur et puis simplement faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update monserveur.monschema.matable set .......

  6. #6
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    En fait, si tu le fais comme ça, je ne suis pas sûr que ce soit le serveur distant qui exécute l'intégralité de la requête.

    Par exemple, tu pourrais imagine que le serveur local récupère d'abord le résultat de la jointure, puis renvoie l'ordre d'exécution de l'update, ou un truc du genre...
    (Ce fonctionnement serait obligatoire si dans ta jointure, tu mélangeais des données des deux serveurs.)
    Et si c'est le cas, les performances sont incomparablement plus faibles.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/09/2006, 00h02
  2. executer une requête existante
    Par Daniel MOREAU dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/08/2006, 18h41
  3. executer une requête par liste déroulante
    Par lolo_bob2 dans le forum Access
    Réponses: 2
    Dernier message: 15/05/2006, 11h35
  4. Comment executer une requête ?
    Par uloaccess dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 09/11/2005, 17h26
  5. [MySQL] Afficher le temps mis pour executer une requête SQL
    Par micatmidog dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/09/2005, 11h23

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