web-dev-qa-db-fra.com

Comment exécuter plusieurs scripts SQL à l'aide d'un fichier de commandes?

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?

14
Willem

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

3
Andreas Rohde

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.

9
Galdur

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/

5
Chuck Norris

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.

2
Clinton Ward

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é.

1
Arcturus

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.

0
Patricio Cobein

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
0
push_ebp