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

Outils SQL Server Discussion :

[OSQL] Time out et code retour


Sujet :

Outils SQL Server

  1. #1
    Invité
    Invité(e)
    Par défaut [OSQL] Time out et code retour
    Bonjour,

    J'ai un petit soucis avec OSQL (pour l'instant je ne pouvais pas vraiment utiliser SQLCMD, mais d'après mes tests, ça ne résoudrait pas mon problème).

    Le contexte... J'effectue un appel OSQL via un script batch. Afin que ça ne risque pas de bloquer le serveur SQL, j'ai précisé un timeout pour la requête à l'aide de l'option "-t", que j'ai fixé à 10min.

    Mon problème... Le hic, c'est que quand OSQL arrive au timeout, il interrompt la requête et termine en renvoyant... 0, soit l'ERRORLEVEL qui correspond à un traitement correctement terminé. Seulement voilà, si on est arrivé au timeout, le traitement ne s'est pas correctement terminé, les données en sortie ne seront pas celles attendues mais un message indiquant l'expiration du délai d'exécution. Ça ne m'arrange donc pas du tout ce 0 en retour.

    Ma question... Est-ce qu'il y a un moyen de savoir que OSQL a interrompu la requête à cause du timeout ? (Sans aller lire le message renvoyé bien sûr parce que tout ça est automatisé et qu'on ne peut pas prévoir exactement le format du message)

    Merci d'avance à ceux qui pourraient m'aider !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Personne n'a une idée ? Personne n'a rencontré ce problème ?
    Désolée de reposter, je sais qu'en plus c'est les fêtes, mais ce problème est assez... problématique

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    Bonjour,

    (Sans aller lire le message renvoyé bien sûr parce que tout ça est automatisé et qu'on ne peut pas prévoir exactement le format du message)
    Et pourquoi pas ? Je pense que capturer la presence du mot-clé "Query timeout expired" dans le fichier out est une bonne solution, le code retour d'OSQL ne concernant qu'OSQL lui-même, pas celui du SQL executé. Avec FIND par exemple ? Le message de timeout est invariable. Et puis si vous trouvez le mot clé Msg dans ta sortie, il y a de fortes chances que tu aies eu une erreur également.

    bonne chance !
    Emmanuel T.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour !

    Merci pour ta réponse !
    "Le message de timeout est invariable." ... Certes, enfin, ça dépend encore de la langue paramétrée, peut-être de la version SQL Server... En tout cas, aucun point communs entre le message d'erreur en français et le message d'erreur en Anglais. Le coup du MSG c'est moyen aussi, parce que ça pourrait très bien se retrouver dans les données "normales" renvoyées par mon appel.
    Par ailleurs, si le code retour concerne OSQL, je trouve bizarre qu'il m'indique que tout s'est bien passé alors qu'en fait, il a interrompu son appel... m'enfin...

    Va falloir que je réussisse à bidouiller un truc un peu bancal et j'aime pas trop ça... Mais bon, si quelqu'un passe par là et a une idée super, je prends !

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    je suis bien d'accord pour le code retour, c'est dommage de ne pas pouvoir faire qqch de propre.

    En dernier recours tu peux rediriger les messages serveur dans un fichier different de celui qui reçoit le resultat de la requête, en utilisant le -r 1.
    Si ton fichier d'erreur est vide, ça s'est bien passé sinon erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    osql -i fic.sql -o result.out -r 1 > error.txt 2<&1
    Emmanuel T.

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'avais essayé de faire sortir les erreurs sur un fichier à part, mais je n'avais pas réussi... Je vais réessayer, ce serait une solution qui m'irait assez bien ! Ta syntaxe me semble un peu différente de ce que j'avais essayé, j'ai donc peut-être une chance !

    Merci encore !

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/06/2014, 11h39
  2. [MySQL] Erreur time out code
    Par Anthony_ dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/01/2010, 15h33
  3. [Session]maîtriser le time out de la session
    Par croquedur dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 23/10/2007, 10h57
  4. code retour UNIX sur erreur ORA
    Par vinz_07 dans le forum Administration
    Réponses: 7
    Dernier message: 25/08/2004, 11h04
  5. [commande DOS] Récupérer le code retour d'un programme
    Par bobunny dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 04/06/2004, 15h51

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