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 :

Problème avec xp_cmdshell


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut Problème avec xp_cmdshell
    Bonjour à tous, j'ai un petit problème, dans une procédure stockée :

    Je lance un .bat qui lui même lance une application (cisx.exe pour pas la nommer) avec un fichier en paramètre, mais comme l'application ouvre une fenêtre graphique traite mon fichier et se referme, je peux pas le faire via xp_cmdshell (je suppose à cause de la fenêtre graphique).
    Mon .bat fonctionne super bien si je le lance en manuel depuis mon serveur (le même qui héberge ma base et donc ma proc).

    Ma question est donc de savoir si je peux lancer mon .bat avec xp_cmdshell et peut-être une option qui me manque ou un paramétrage ou si d'autres solutions s'offrent à moi pour contourner le problème de cette ...... de fenêtre graphique.

    Merci d'avance, bonne fin de semaine à tous.

  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,

    je peux pas le faire via xp_cmdshell (je suppose à cause de la fenêtre graphique)
    Quel problème obtenez-vous exactement ?
    Quel est le libellé de l'erreur si vous en obtenez une ?

    Supposons que la ligne de commande que vous utilisez pour exécuter à la main votre .bat est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\CISX\cisx.exe -mesParams
    Alors pour l'exécuter vous devrez écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @DOSCmd VARCHAR(255)
    SET @DOSCmd = 'C:\CISX\cisx.exe -mesParams'
     
    EXEC master.dbo.xp_cmdshell @DOSCmd, NO_OUTPUT
    Sinon un moyen pour contourner cela est d'écrire une procédure stockée d'assembly qui se charge d'exécuter l'application.
    Peut-être que l'on peut faire cela avec SSIS aussi ...

    @++

  3. #3
    Membre chevronné Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Par défaut
    Bonjour,

    SQL Serveur tourne en tant que service. xp_cmdshell est conçu pour lancer des applications ne nécessitant pas la couche GUI de windows.
    D'ailleurs, dans la barre des tâches, on voit un processus tourner, pas une application.

    Ce processus ne sera pas lancé par un compte d'utilisateur pouvant interagir avec le bureau mais par un compte de service, celui de SQL ou de l'agent si vous passez par un job.

    Si votre application ne requiert aucune action de la part de l'utilisateur, n'interagit pas avec la couche win32 et ne risque pas d'afficher une fenêtre modale du genre messagebox, ca peut sans doute passer. Dans ce cas, vous devriez pouvoir l'exécuter sans passer par un fichier de commandes, à moins que cette application ne sorte un résultat utile sur la sortie standard ou la sortie d'erreur et que vous ayez besoin de le rediriger.

    En passant par un assembly, c'est la même chose. Si vous vous avez besoin interagir avec la couche graphique de windows, il vous faut échanger des messages avec une application qui tourne déja dans celle ci.

    @+

Discussions similaires

  1. [2012] Problème avec un trigger + xp_cmdshell + executable
    Par PHPkoala dans le forum Développement
    Réponses: 6
    Dernier message: 25/03/2015, 23h52
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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