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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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