2012-01-13 15 views
14

Ho un caso in cui ho ottenuto 10+ SQL script.Come eseguire più script SQL utilizzando un file batch?

Non voglio andare a eseguire tutti i miei script 1 di 1.

C'è un modo che io possa eseguire tutti i miei script in successione in SQL Management studio.

Ho trovato this post. Creare un file batch sembra più semplice.

Questo è tutto ciò che serve:

@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 

Sostituzione servername e databasename, ma sembra essere non funzionante.

Qualche idea?

+0

Cosa viene visualizzato in output.txt quando si esegue il file batch? –

+0

@MarkBannister Willem ha avviato il processo batch in 10: 50: 30.46. Quindi non succede nient'altro – Willem

+0

Che output ottieni se rimuovi il comando '@echo off' dal file batch e riprova? Inoltre, provare ad aggiungere 'ECHO% PATH%' all'inizio del file batch e verificare che il percorso per SQLCMD.EXE sia incluso. –

risposta

3

È possibile creare una procedura strored per chiamare tutti gli script. È inoltre possibile creare un piano di pianificazione per l'esecuzione automatica degli script.

http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx

+0

Si prega di dare un'occhiata alla mia domanda aggiornata. – Willem

+0

Hai ricevuto un messaggio di errore dallo script? Hai controllato il percorso per '* .sql', che rappresenta gli script sql che vuoi eseguire. –

+0

Nessun messaggio di errore. I percorsi sono perfetti – Willem

9

hai una parentesi senza pari, lì. Prova

per %% f in (* .sql) fare sqlcmd.exe -S nomeserver -E -d databasename -i %% f >> output.txt

ho appena salvato in un .cmd file e sembra funzionare.

2

Ecco un'utility open source con il codice sorgente http://scriptzrunner.codeplex.com/

Questa utility è stato scritto in C# e ti permette di trascinare e rilasciare molti file sql e iniziare a correre contro una base di dati.

1

Probabilmente lo sai già, in caso contrario, lo script pubblicato verrà eseguito solo sui computer su cui è installato SQL server.

0

Alcuni lotti trucco

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

È possibile utilizzare Batch Compiler add-in per SMSS, che ti permette di eseguire più script contemporaneamente, creare script SQLCMD o consolidarle in un file * .sql.

Problemi correlati