OVH Cloud OVH Cloud

Sortir d'un script à plusieurs lots.

7 réponses
Avatar
VUILLERMET Jacques
Dans un script contenant plusieurs lots, on quitte un lot par RETURN.

Mais comment faire une interruption du script tout entier sans reprise au
lot suivant ?

Exemple de script MonFichier.sql :

PRINT 'Lot1'
-- ...
IF @@ERROR<>0
<Action de sortie du script>
GO
PRINT 'Lot2 pouvant ne pas être exécuté.'

Jacques.

7 réponses

Avatar
bruno reiter [MVP]
raiserror avec un niveau >= 19

br

"VUILLERMET Jacques" wrote in message
news:
Dans un script contenant plusieurs lots, on quitte un lot par RETURN.

Mais comment faire une interruption du script tout entier sans reprise au
lot suivant ?

Exemple de script MonFichier.sql :

PRINT 'Lot1'
-- ...
IF @@ERROR<>0
<Action de sortie du script>
GO
PRINT 'Lot2 pouvant ne pas être exécuté.'

Jacques.




Avatar
VUILLERMET Jacques
Gros bisou :

SMMMMMMMMMAAAAAAAAAAACKKK !

Jacques ;-)


"bruno reiter [MVP]" a écrit dans le message
de news:
raiserror avec un niveau >= 19

br

"VUILLERMET Jacques" wrote in message
news:
> Dans un script contenant plusieurs lots, on quitte un lot par RETURN.
>
> Mais comment faire une interruption du script tout entier sans reprise


au
> lot suivant ?
>
> Exemple de script MonFichier.sql :
>
> PRINT 'Lot1'
> -- ...
> IF @@ERROR<>0
> <Action de sortie du script>
> GO
> PRINT 'Lot2 pouvant ne pas être exécuté.'
>
> Jacques.
>
>




Avatar
VUILLERMET Jacques
PRINT 'Lot1'
RAISERROR ('Mon message', 19, 1) WITH LOG
GO
PRINT 'Lot2'

renvoie :
Lot1
Serveur : Msg 50000, Niveau 19, État 1, Ligne 2
Mon message
Lot2

et :
PRINT 'Lot1'
RAISERROR ('Mon message', 20, 1) WITH LOG
GO
PRINT 'Lot2'

renvoie :
[Microsoft][ODBC SQL Server Driver][TCP/IP
Sockets]ConnectionCheckForData (CheckforData()).
Serveur : Msg 11, Niveau 16, État 1, Ligne 0
Erreur réseau générale. Consultez la documentation relative à votre
réseau.
ODBC : Msg 0, Niveau 16, État 1
Échec de la liaison de communication

Connexion interrompue

Donc si sévérité = 19 :
- 'Mon message' est visible ;
- le lot suivant est exécuté.

Si sévérité = 20 :
- 'Mon message' n'est pas visible ;
- le lot suivant n'est pas exécuté,
- le résultat de PRINT 'Lot1' sont perdues, dommage pour l'équipe
d'exploitation qui est chargée de lire les messages d'erreurs...

Donc l'idée est plus qu'intéressante (je vais quand même l'utiliser avec une
sévérité à 20, merci encore !), mais perfectionnable...

Jacques.

"bruno reiter [MVP]" a écrit dans le message
de news:
raiserror avec un niveau >= 19

br

"VUILLERMET Jacques" wrote in message
news:
> Dans un script contenant plusieurs lots, on quitte un lot par RETURN.
>
> Mais comment faire une interruption du script tout entier sans reprise


au
> lot suivant ?
>
> Exemple de script MonFichier.sql :
>
> PRINT 'Lot1'
> -- ...
> IF @@ERROR<>0
> <Action de sortie du script>
> GO
> PRINT 'Lot2 pouvant ne pas être exécuté.'
>
> Jacques.
>
>




Avatar
bruno reiter [MVP]
pas terrible le print pour l'exploit

j'utilise xp_smtp_sendmail (enfin basé sur ça)
http://sqldev.net/xp/xpsmtp.htm

br

"VUILLERMET Jacques" wrote in message
news:
PRINT 'Lot1'
RAISERROR ('Mon message', 19, 1) WITH LOG
GO
PRINT 'Lot2'

renvoie :
Lot1
Serveur : Msg 50000, Niveau 19, État 1, Ligne 2
Mon message
Lot2

et :
PRINT 'Lot1'
RAISERROR ('Mon message', 20, 1) WITH LOG
GO
PRINT 'Lot2'

renvoie :
[Microsoft][ODBC SQL Server Driver][TCP/IP
Sockets]ConnectionCheckForData (CheckforData()).
Serveur : Msg 11, Niveau 16, État 1, Ligne 0
Erreur réseau générale. Consultez la documentation relative à votre
réseau.
ODBC : Msg 0, Niveau 16, État 1
Échec de la liaison de communication

Connexion interrompue

Donc si sévérité = 19 :
- 'Mon message' est visible ;
- le lot suivant est exécuté.

Si sévérité = 20 :
- 'Mon message' n'est pas visible ;
- le lot suivant n'est pas exécuté,
- le résultat de PRINT 'Lot1' sont perdues, dommage pour l'équipe
d'exploitation qui est chargée de lire les messages d'erreurs...

Donc l'idée est plus qu'intéressante (je vais quand même l'utiliser avec une
sévérité à 20, merci encore !), mais perfectionnable...

Jacques.

"bruno reiter [MVP]" a écrit dans le message
de news:
> raiserror avec un niveau >= 19
>
> br
>
> "VUILLERMET Jacques" wrote in message
> news:
> > Dans un script contenant plusieurs lots, on quitte un lot par RETURN.
> >
> > Mais comment faire une interruption du script tout entier sans reprise
au
> > lot suivant ?
> >
> > Exemple de script MonFichier.sql :
> >
> > PRINT 'Lot1'
> > -- ...
> > IF @@ERROR<>0
> > <Action de sortie du script>
> > GO
> > PRINT 'Lot2 pouvant ne pas être exécuté.'
> >
> > Jacques.
> >
> >
>
>




Avatar
VUILLERMET Jacques
> pas terrible le print pour l'exploit


Question de goût et d'environnement.
Pour ma part, si je dois historiser des logs je préfère que ce soit des
fichiers dans un répertoire plutôt que des mails dans une boîte aux lettres.

Les goûts et les couleurs...

Merci encore !

Jacques.

"bruno reiter [MVP]" a écrit dans le message
de news:
pas terrible le print pour l'exploit

j'utilise xp_smtp_sendmail (enfin basé sur ça)
http://sqldev.net/xp/xpsmtp.htm

br

"VUILLERMET Jacques" wrote in message
news:
> PRINT 'Lot1'
> RAISERROR ('Mon message', 19, 1) WITH LOG
> GO
> PRINT 'Lot2'
>
> renvoie :
> Lot1
> Serveur : Msg 50000, Niveau 19, État 1, Ligne 2
> Mon message
> Lot2
>
> et :
> PRINT 'Lot1'
> RAISERROR ('Mon message', 20, 1) WITH LOG
> GO
> PRINT 'Lot2'
>
> renvoie :
> [Microsoft][ODBC SQL Server Driver][TCP/IP
> Sockets]ConnectionCheckForData (CheckforData()).
> Serveur : Msg 11, Niveau 16, État 1, Ligne 0
> Erreur réseau générale. Consultez la documentation relative à votre
> réseau.
> ODBC : Msg 0, Niveau 16, État 1
> Échec de la liaison de communication
>
> Connexion interrompue
>
> Donc si sévérité = 19 :
> - 'Mon message' est visible ;
> - le lot suivant est exécuté.
>
> Si sévérité = 20 :
> - 'Mon message' n'est pas visible ;
> - le lot suivant n'est pas exécuté,
> - le résultat de PRINT 'Lot1' sont perdues, dommage pour l'équipe
> d'exploitation qui est chargée de lire les messages d'erreurs...
>
> Donc l'idée est plus qu'intéressante (je vais quand même l'utiliser avec


une
> sévérité à 20, merci encore !), mais perfectionnable...
>
> Jacques.
>
> "bruno reiter [MVP]" a écrit dans le


message
> de news:
> > raiserror avec un niveau >= 19
> >
> > br
> >
> > "VUILLERMET Jacques" wrote in message
> > news:
> > > Dans un script contenant plusieurs lots, on quitte un lot par


RETURN.
> > >
> > > Mais comment faire une interruption du script tout entier sans


reprise
> au
> > > lot suivant ?
> > >
> > > Exemple de script MonFichier.sql :
> > >
> > > PRINT 'Lot1'
> > > -- ...
> > > IF @@ERROR<>0
> > > <Action de sortie du script>
> > > GO
> > > PRINT 'Lot2 pouvant ne pas être exécuté.'
> > >
> > > Jacques.
> > >
> > >
> >
> >
>
>




Avatar
bruno reiter [MVP]
Les logs dans des tables d'une base LOG
Les mails pour avertir
;-)

br

"VUILLERMET Jacques" wrote in message
news:
> pas terrible le print pour l'exploit
Question de goût et d'environnement.
Pour ma part, si je dois historiser des logs je préfère que ce soit des
fichiers dans un répertoire plutôt que des mails dans une boîte aux lettres.

Les goûts et les couleurs...

Merci encore !

Jacques.

"bruno reiter [MVP]" a écrit dans le message
de news:
> pas terrible le print pour l'exploit
>
> j'utilise xp_smtp_sendmail (enfin basé sur ça)
> http://sqldev.net/xp/xpsmtp.htm
>
> br
>
> "VUILLERMET Jacques" wrote in message
> news:
> > PRINT 'Lot1'
> > RAISERROR ('Mon message', 19, 1) WITH LOG
> > GO
> > PRINT 'Lot2'
> >
> > renvoie :
> > Lot1
> > Serveur : Msg 50000, Niveau 19, État 1, Ligne 2
> > Mon message
> > Lot2
> >
> > et :
> > PRINT 'Lot1'
> > RAISERROR ('Mon message', 20, 1) WITH LOG
> > GO
> > PRINT 'Lot2'
> >
> > renvoie :
> > [Microsoft][ODBC SQL Server Driver][TCP/IP
> > Sockets]ConnectionCheckForData (CheckforData()).
> > Serveur : Msg 11, Niveau 16, État 1, Ligne 0
> > Erreur réseau générale. Consultez la documentation relative à votre
> > réseau.
> > ODBC : Msg 0, Niveau 16, État 1
> > Échec de la liaison de communication
> >
> > Connexion interrompue
> >
> > Donc si sévérité = 19 :
> > - 'Mon message' est visible ;
> > - le lot suivant est exécuté.
> >
> > Si sévérité = 20 :
> > - 'Mon message' n'est pas visible ;
> > - le lot suivant n'est pas exécuté,
> > - le résultat de PRINT 'Lot1' sont perdues, dommage pour l'équipe
> > d'exploitation qui est chargée de lire les messages d'erreurs...
> >
> > Donc l'idée est plus qu'intéressante (je vais quand même l'utiliser avec
une
> > sévérité à 20, merci encore !), mais perfectionnable...
> >
> > Jacques.
> >
> > "bruno reiter [MVP]" a écrit dans le
message
> > de news:
> > > raiserror avec un niveau >= 19
> > >
> > > br
> > >
> > > "VUILLERMET Jacques" wrote in message
> > > news:
> > > > Dans un script contenant plusieurs lots, on quitte un lot par
RETURN.
> > > >
> > > > Mais comment faire une interruption du script tout entier sans
reprise
> > au
> > > > lot suivant ?
> > > >
> > > > Exemple de script MonFichier.sql :
> > > >
> > > > PRINT 'Lot1'
> > > > -- ...
> > > > IF @@ERROR<>0
> > > > <Action de sortie du script>
> > > > GO
> > > > PRINT 'Lot2 pouvant ne pas être exécuté.'
> > > >
> > > > Jacques.
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
VUILLERMET Jacques
> Les logs dans des tables d'une base LOG


Bien vu !

jv

"bruno reiter [MVP]" a écrit dans le message
de news:
Les logs dans des tables d'une base LOG
Les mails pour avertir
;-)

br

"VUILLERMET Jacques" wrote in message
news:
> > pas terrible le print pour l'exploit
> Question de goût et d'environnement.
> Pour ma part, si je dois historiser des logs je préfère que ce soit des
> fichiers dans un répertoire plutôt que des mails dans une boîte aux


lettres.
>
> Les goûts et les couleurs...
>
> Merci encore !
>
> Jacques.
>
> "bruno reiter [MVP]" a écrit dans le


message
> de news:
> > pas terrible le print pour l'exploit
> >
> > j'utilise xp_smtp_sendmail (enfin basé sur ça)
> > http://sqldev.net/xp/xpsmtp.htm
> >
> > br
> >
> > "VUILLERMET Jacques" wrote in message
> > news:
> > > PRINT 'Lot1'
> > > RAISERROR ('Mon message', 19, 1) WITH LOG
> > > GO
> > > PRINT 'Lot2'
> > >
> > > renvoie :
> > > Lot1
> > > Serveur : Msg 50000, Niveau 19, État 1, Ligne 2
> > > Mon message
> > > Lot2
> > >
> > > et :
> > > PRINT 'Lot1'
> > > RAISERROR ('Mon message', 20, 1) WITH LOG
> > > GO
> > > PRINT 'Lot2'
> > >
> > > renvoie :
> > > [Microsoft][ODBC SQL Server Driver][TCP/IP
> > > Sockets]ConnectionCheckForData (CheckforData()).
> > > Serveur : Msg 11, Niveau 16, État 1, Ligne 0
> > > Erreur réseau générale. Consultez la documentation relative à


votre
> > > réseau.
> > > ODBC : Msg 0, Niveau 16, État 1
> > > Échec de la liaison de communication
> > >
> > > Connexion interrompue
> > >
> > > Donc si sévérité = 19 :
> > > - 'Mon message' est visible ;
> > > - le lot suivant est exécuté.
> > >
> > > Si sévérité = 20 :
> > > - 'Mon message' n'est pas visible ;
> > > - le lot suivant n'est pas exécuté,
> > > - le résultat de PRINT 'Lot1' sont perdues, dommage pour l'équipe
> > > d'exploitation qui est chargée de lire les messages d'erreurs...
> > >
> > > Donc l'idée est plus qu'intéressante (je vais quand même l'utiliser


avec
> une
> > > sévérité à 20, merci encore !), mais perfectionnable...
> > >
> > > Jacques.
> > >
> > > "bruno reiter [MVP]" a écrit dans le
> message
> > > de news:
> > > > raiserror avec un niveau >= 19
> > > >
> > > > br
> > > >
> > > > "VUILLERMET Jacques" wrote in message
> > > > news:
> > > > > Dans un script contenant plusieurs lots, on quitte un lot par
> RETURN.
> > > > >
> > > > > Mais comment faire une interruption du script tout entier sans
> reprise
> > > au
> > > > > lot suivant ?
> > > > >
> > > > > Exemple de script MonFichier.sql :
> > > > >
> > > > > PRINT 'Lot1'
> > > > > -- ...
> > > > > IF @@ERROR<>0
> > > > > <Action de sortie du script>
> > > > > GO
> > > > > PRINT 'Lot2 pouvant ne pas être exécuté.'
> > > > >
> > > > > Jacques.
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>