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 :

xp_cmdshell sys.objects sys.syscomments


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut xp_cmdshell sys.objects sys.syscomments
    Bonjour à tous,

    je suis pas arrivé à comprende pourkoi la rêquette ci-dessous donne un fichier function.sql vide?

    à noter que
    *ObjectsCreated est le repertoire de destination


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXEC GIE..xp_cmdshell 'bcp " select text From sys.syscomments,sys.objects  where sys.syscomments.id = sys.objects.object_id and sys.objects.type =''FN''  " queryout c:\livraison10\ObjectsCreated\function.sql -U sa -P cbs -c -t\;'
    malgré que ce deuxième code ci-dessous donne de résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select text
     From sys.syscomments,sys.objects  
    where sys.syscomments.id = sys.objects.object_id and 
    sys.objects.type ='FN'
    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Avec xp_cmdshell, vous ne pouvez pas voir les erreurs qui se produisent.
    Imprimez donc la commande puis exécutez la dans une fenêtre DOS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @bcp VARCHAR(256)
    SET @bcp = 'bcp " select text From sys.syscomments,sys.objects  where sys.syscomments.id = sys.objects.object_id and sys.objects.type =''FN''  " queryout c:\livraison10\ObjectsCreated\function.sql -U sa -P cbs -c -t\;'
    PRINT @bcp
    @++

  3. #3
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    bonjour à tous,

    le code ci-dessous donne des résultats attendues:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SET @bcpCommand = 'bcp " select text From '+@Dbname+'..syscomments,'+@Dbname+'..sysobjects  where syscomments.id = sysobjects.id and sysobjects.xtype ='''''+@type_extract+'''''  and  left(sysobjects.name,2)=''''q_''''" queryout ' 
            SET @bcpCommand = @bcpCommand +@path+'\ObjectsCreated\'+@object_extract+'.sql'+ ' -U sa -P '+@pwd+' -c -t\;'
            SET @requete1 = 'EXEC '+@Dbname+'..xp_cmdshell '''+@bcpCommand+'''' 
            exec(@requete1)
    maisle code suivant ci-dessous donne des resultast fausses malgrés que la différence est juste de remplacer une table par une vue.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SET @bcpCommand = 'bcp " select text From sys.syscomments,sys.objects where sys.syscomments.id = sys.objects.object_id and sys.objects.type ='''''+@type_extract+''''' and left(sys.objects.name,2)=''''q_''''" queryout ' 
            SET @bcpCommand = @bcpCommand +@path+'\ObjectsCreated\'+@object_extract+'.sql'+ ' -U sa -P '+@pwd+' -c -t\;'
            SET @requete1 = 'EXEC master..xp_cmdshell '''+@bcpCommand+''',no_output' 
            exec(@requete1)


    merci d'avance

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Pourriez-vous donner les résultats des deux requête de base ?

    N'écrivez pas vos requêtes en faisant les jointures dans la clause WHERE, utilisez pour cela le préficat INNER / LEFT / RIGHT JOIN.

    @++

  5. #5
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    Bonjour,

    Quelle est la difference entre jointure avec where et jointure par join

    merci a tous

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Lorsque vous spécifiez un JOIN, le moteur de base de données s'attend à devoir effectuer une jointure, ce qui n'est pas le cas lorsque vous spécifiez WHERE ou il s'attend à faire un tri.

    Dans la plupart des cas l'optimiseur de requête est assez intelligent pour réaliser les jointures lui-même même si vous spécifiez celles-ci dans la clause WHERE, mais dans d'autres non, et vous obtenez ainsi un plan de requête qui n'est pas forcément le meilleur.

    Dans un souci de lisibilité de votre code aussi, cela permet de séparer les jointures des contraintes de votre requête, et donc d'être plus proche des récentes normes SQL.

    @++

Discussions similaires

  1. [2005] Table invisible dans objects explorer et sys.tables
    Par jack01 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/06/2013, 17h48
  2. [MASM] Compiler un fichier .sys ?
    Par - Robby - dans le forum x86 16-bits
    Réponses: 12
    Dernier message: 08/01/2008, 11h28
  3. sys.objects et sys.sysobjects
    Par widom dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/05/2007, 16h23
  4. Réponses: 33
    Dernier message: 18/04/2005, 23h06
  5. PL/SQL SYS.DBMS_RECTIFIER_DIFF.RECTIFY
    Par aline dans le forum PL/SQL
    Réponses: 15
    Dernier message: 15/02/2005, 09h37

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