SQL Server : Passer des paramètres à un fichier .sql avec la commande sqlcmd

Voici un exemple de fichier script.sql :

USE ma_base
GO
UPDATE ma_table SET un_champ = ’Une valeur’ WHERE un_autre_champ = ’$(Parametre1)’
GO

Notez la présence de $(Parametre1) qui indique que le script attend une valeur passée en paramètre, dont le nom est Parametre1
Maintenant, voici le fichier .bat qui va appeler ce script SQL via la commande sqlcmd :

@echo off
sqlcmd -S mon_serveur_de_bdd -i script.sql -v Parametre1="Une autre valeur"
pause

Du coup, la requête lancée sera :
UPDATE ma_table SET un_champ = ’Une valeur’ WHERE un_autre_champ = ’Une autre valeur’
C’est pas beautiful ça ?

BATCH : Codes retour (errorlevel )

Dans un fichier .bat, il est souvent nécessaire de retourner un code erreur afin de vérifier son bon fonctionnement.
A la fin du fichier, il suffit d’entrer la commande exit /b number
errorlevel est une instruction qui retourne le code erreur le plus élevé retourné durant l’exécution du batch.
En faisant if errorlevel 3 exit /b 3, on teste si il y a eut une erreur durant le script, et on sort avec ce même code erreur
Le code complet serait :

if errorlevel 3 exit /b 3
if errorlevel 1 exit /b 1
if errorlevel 0 exit /b 0

ATTENTION, si le code erreur est 3, alors errorlevel 3 renvoie vrai, mais aussi errorlevel 2 ou 1, ou 0 !
Errorlevel renvoie VRAI si le code erreur est inférieur ou égal au nombre.