2015-10-20 1 views
2

J'utilise sqlcmd pour exécuter une requête sql dans un fichier batch. Je voudrais ensuite - selon que la requête sql a été exécutée avec succès ou non - faire quelque chose.Vérifiez si sqlcmd a réussi

sqlcmd -some flags -Q "Query" 
iF successful (
    do this 
) ELSE (
    do that 
) 

Merci - Je ne connais pas encore la programmation par lots.

+2

Le sqlcmd renvoie-t-il un niveau d'erreur? Mettez ceci après votre sqlcmd pour voir si c'est le cas. 'echo% errorlevel%' – Squashman

Répondre

2

Le code de sortie d'un programme est représenté par la variable d'environnement ERRORLEVEL. Utilisez if /? pour plus de détails.

sqlcmd -some flags -Q "Query" 
if ERRORLEVEL 1 (
    do this failed 
) ELSE (
    do that success 
) 
+1

Vous devez supprimer les symboles% ou le changer en 'if% errorlevel% == 1'. – Squashman

+0

Édité concernant le commentaire @Squashman. – lit

+0

OK, cela fonctionne très bien! Mais je me demande comment je pourrais attraper le cas où 'sqlcmd' a fonctionné mais la' sql query' n'a pas fonctionné? – JSHelp

3

le plus simple est avec conditional execution (je pense que sqlcmd a différents codes d'erreur en cas d'exécution non réussie):

sqlcmd -some flags -Q "query" &&(
    echo SUCCESS 
    echo do something 
    color 
)||(
    echo failed 
    echo do something else 
) 
+0

Le sqlcmd affiche le résultat de sql. J'utilise le drapeau '-o' mais je ne peux pas imaginer que c'est la raison. Où puis-je obtenir les codes d'erreur? – JSHelp

+0

Je suppose que l'exécution conditionnelle est bonne - Je vais l'essayer – JSHelp