SQL Server : Exécuter un fichier de script SQL dans un autre script SQL
Si vous souhaitez exécuter un fichier de script SQL depuis un autre, c'est possible avec
SQLCMD. Disponible depuis SQL Server2005, il succède à OSQL, qui a lui-même succédé à ISQL.
Il n'y a rien de plus simple. Dans votre premier fichier de script, il vous suffit d'ajouter l'élément suivant pour appeler un second fichier de script. Ce second fichier s'appelle ici « second.sql » :
:r .\second.sql
On présumera que les fichiers sont situés dans le même répertoire. Les scripts ressembleront à ce qui suit.
Le contenu du fichier
premier.sql-- Contenu de premier.sql
PRINT 'Début premier'
:r .\second.sql
PRINT 'Fin Premier'
Le contenu du fichier
second.sql-- Contenu de second.sql
PRINT 'Début Second'
-- Ce que vous voulez ici
PRINT 'Fin Second'
Pour exécuter le fichier de script « premier.sql », faites appel à
SQLCMD.EXE avec la syntaxe suivante. Ici, le serveur est local et on utilise l’authentification Windows, c’est pour cela que je n’ai pas besoin d’argument supplémentaire.
sqlcmd -i premier.sql
Vous pouvez aussi tester cette fonction dans SQL Server Management Studio en cliquant sur «
SQLCMD Mode » dans la barre d'outils. Option que vous retrouvez dans le menu « requêtes ».
Attention, il y a une limite qui est tout de même assez importante, le fichier
de script SQL qui est exécuté est situé sur la machine où le script exécuté par
SQLCMD est appelé. Dans mon exemple, c’est la même machine, mais suivant votre
situation cela risque d’être une machine radicalement différente. Je vous
conseille dans ce cas de passer par des chemins réseau qui sont visibles par
toutes les machines depuis lesquelles vous exécuterez les scri
Pour approfondir le sujet, un article qui détaille quelques fonctionnalités supplémentaires de
SQLCMD :
http://www.sqlnco.ch/2011/09/sqlcmd-et-l-utilisation-de-variables-en-parametre-pour-rendre-ses-scripts-generique/ Bon codage…
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :