Dans mon script de pré-déploiement, je souhaite arrêter le déploiement si une base de données n’existe pas.
Comme indiqué en entête de Script.PreDeployment.sql, je me décide à utiliser la syntaxe de SQLCMD (qui sera utilisé pour jouer mon script).
J’écris donc une commande de ce style :
IF NOT EXISTS (SELECT 1 FROM [sys].[databases] WHERE [name] = N'$(DatabaseName)')
QUIT
Seulement, comme pour les variables, l’étape de parsing à la compilation d’un projet de base de données ne supporte pas le mot-clé QUIT (ni EXIT d’ailleurs). Donc impossible de sortir du script sur une condition.
Solution de contrournement : lever une erreur avec l’instruction RAISERROR et utiliser l’option -b avec SQLCMD pour stopper le script sur erreur
IF NOT EXISTS (SELECT 1 FROM [sys].[databases] WHERE [name] = N'$(DatabaseName)')
RAISERROR(N'Database $(DatabaseName) does not exists, setup could not be execute.',0,1)