J'ai un cas où j'ai 10+ SQL script
.
Je ne veux pas aller exécuter tous mes scripts 1 par 1.
Y at-il un moyen que je puisse exécuter tous mes scripts à la suite dans SQL Management studio
.
J'ai trouvé ceci post. Créer un fichier batch semble plus facile.
C'est tout ce dont vous avez besoin:
@echo off
ECHO %USERNAME% started the batch process at %TIME% >output.txt
for %%f in (*.sql) do (
(
sqlcmd.exe -S servername -E -d databasename -i %%f >>output.txt
)
pause
Remplacement du nom de serveur et du nom de la base de données, mais cela ne semble pas fonctionner.
Des idées?
Vous pouvez créer une procédure analysée pour appeler tous vos scripts. Vous pouvez également créer un plan de calendrier pour exécuter les scripts automatiquement.
http://msdn.Microsoft.com/en-us/library/aa174792(v=sql.80).aspx
Vous avez une parenthèse incomparable, là. Essayez
pour %% f in (* .sql), exécutez sqlcmd.exe -S nom_serveur -E -d nom_base_données -i %% f >> output.txt
Je viens de l'enregistrer dans un fichier .cmd et il semble fonctionner.
Oui c'est possible. Vous pouvez le faire avec: r commande de SQLCMD
.
Je vous recommande fortement de lire cet article et de le faire avec SQLCMD
http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/
Voici un utilitaire open source avec le code source http://scriptzrunner.codeplex.com/
Cet utilitaire a été écrit en c # et vous permet de faire glisser de nombreux fichiers SQL et de les exécuter sur une base de données.
Vous le savez probablement déjà. Dans le cas contraire, le script que vous avez publié ne sera exécuté que sur des ordinateurs sur lesquels SQL Server est installé.
Vous pouvez utiliser Batch Compiler add-in pour SMSS. Il vous permet d’exécuter plusieurs scripts à la fois, de créer des scripts SQLCMD ou de les consolider dans un fichier * .sql.
Une astuce batch
cd %~dp0 //use this if you use 'for xxx in', it solved most of my problems
ECHO %USERNAME% started the batch process at %TIME% >output.txt
for %%f in (*.sql) do (
(
sqlcmd.exe -S servername -E -d databasename -i %%f >>output.txt
)
echo %errorlevel%
pause