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

Administration SQL Server Discussion :

Automatisation avec sqlcmd sans code erreur


Sujet :

Administration SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Automatisation avec sqlcmd sans code erreur
    Bonjour

    Pour automatiser les déploiements dans nos BD sql, je souhaiterais scripter l'exécution des diverses requêtes sql.
    Pour cela je me sert de sqlcmd. Le problème est que si la requête ne se déroule pas correctement, je ne récupère pas de code erreur dans mon batch de lancement.
    Comment est-il possible de récupérer un code erreur dans le batch lorsque le script SQL est incorrect?

    Merci d'avance pour vos réponses.

  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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez utilisez le commutateur -o de SQLCMD pour spécifier un fichier de sortie dans lequel se trouveront après exécution le résultat de toutes les commandes de votre script SQL.

    @++

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci de la réponse.
    Le commutateur ne permet que de rediriger la sortie vers le fichier.
    Or certaines requêtes ne retournent strictement rien lorsqu'elles se déroulent.
    L'idée étant de généraliser ce script, je ne peut me permettre de traiter un fichier texte à cause de la multitude de sorties possibles.
    D'où l'idée de récupérer le code retour de l'exécution du script.
    Cela est-il envisageable?

    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    OK, je comprends mieux.

    Dans ce cas vous pouvez utiliser le commutateur -b qui par défaut affecte 1 à la variable DOS ERRORLEVEL si le niveau d'erreur est supérieur à 10.
    Vous pouvez abaisser le niveau d'erreur avec les commutateur -V (spécifie le niveau de gravité le plus faible devant retourner un ERRORLEVEL à 1)

    Il vous suffit ensuite dans votre batch DOS de vérifier que la valeur de ERRORLEVEL n'est pas 1, mais je vous concède que ce n'est pas très précis ...

    @++

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    Bonjour,
    Ce n'est pas non plus forcément la panacée, mais il pourrait lire @@error après exécution de sa requête non ?

  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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Effectivement le mieux serait cela, mais je ne sais pas comment on peut transmettre la valeur de @@ERROR à une variable DOS pour pouvoir la tester dans le batch

    @++

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    S'il le génère dans un fichier texte, ça va pas être bien dur à traiter : soit 0 si pas d'erreur, soit un n° d'erreur sql.

Discussions similaires

  1. ETAT avec Rupture (SANS CODE ou AVEC)
    Par slimlus dans le forum WinDev
    Réponses: 1
    Dernier message: 18/12/2013, 11h15
  2. [1.x] Création de site Blanc avec Symfony sans duplication de code ?
    Par boby6killer dans le forum Symfony
    Réponses: 11
    Dernier message: 19/01/2011, 12h50
  3. Récupérer code erreur avec Firebird et Zeoslib
    Par seabs dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/06/2010, 16h28
  4. Réponses: 26
    Dernier message: 24/06/2009, 09h32
  5. Réponses: 0
    Dernier message: 04/04/2008, 17h14

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