Interrompre un script selon des conditions
Bonjour,
Nous avons dans le cadre d'une reprise à passer différents script dans un ordre particulier sur deux bases de données. Nous avons donc un document décrivant les étapes du genre.
Passer Script 1 sur base A
Passer Script 2 sur base A
Passer script 3 sur base B
Faire telle opération
Lancer script 4 sur base A.
Je crains les erreurs lors du suivi du mode opératoire, et par exemple que le script 1 soit passé sur la base B. Je voudrais donc blinder mes scripts pour qu'ils partent en erreur et ne s’exécute pas en cas d'erreur de base de données. Le problème est que ces scripts contiennent des GO
Voici ce que j'ai essayé.
Code:
1 2 3 4 5 6 7 8 9
| SET XACT_ABORT ON;
if db_name() not like 'CNET%'
begin
raiserror('Ce script ne doit pas être joué sur cette base de données',16,1)
end
GO
select 'Je ne dois pas voir ce message'
GO |
Voilà ce que j'obtiens
Citation:
Msg 50000, Level 16, State 1, Line 4
Ce script ne doit pas être joué sur cette base de données
Je ne dois pas voir ce message
(1 row(s) affected)
Deuxième essai
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
if db_name() not like 'CNET%'
begin
GOTO ErreurBD
end
--GO
select 'Je ne dois pas voir ce message'
--GO
GOTO fin
ErreurBD:
raiserror('Ce script ne doit pas être joué sur cette base de données',16,1)
fin: |
Qui donne bien le résultat attendu tant que je ne décommente pas les GO.
Y-a t-il une solution à mon problème, sachant que je ne suis pas sure de pouvoir supprimer tous les GO.
Merci de votre aide
Soazig