Stopper un script de déploiement avec DBPros

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)

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s