Wie führe ich mehrere SQL -Skripte mithilfe einer Stapeldatei aus?
-
27-10-2019 - |
Frage
Ich habe einen Fall, in dem ich 10+ habe SQL script
.
Ich möchte nicht alle meine Skripte 1 bis 1 ausführen.
Gibt es einen Weg, wie ich alle meine Skripte nacheinander ausführen kann SQL Management studio
.
ich fand Dies Post. Das Erstellen einer Stapeldatei scheint einfacher zu sein.
Das ist alles, was Sie brauchen:
@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
Ersetzen von ServerName und Databasename, aber es scheint nicht zu funktionieren.
Irgendwelche Ideen?
Lösung
Sie können eine gespeicherte Prozedur erstellen, um alle Ihre Skripte anzurufen. Sie können auch einen Zeitplanplan erstellen, um die Skripte automatisch auszuführen.
http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx
Andere Tipps
Sie haben dort eine unübertroffene Klammer. Versuchen
Für %% f in (*.sql) do sqlcmd.exe -s sservername -e -d -DatenbankaName -i %% F >> output.txt
Ich habe es gerade in einer .cmd -Datei gespeichert und es scheint zu funktionieren.
Ja es ist möglich. Sie können es mit: r Befehl von tun SQLCMD
.
Ich empfehle Ihnen dringend, diesen Artikel zu lesen und mit ihm zu tun SQLCMD
http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/
Hier ist ein Open -Source -Dienstprogramm mit Quellcode http://scriptzrunner.codeplex.com/
Dieses Dienstprogramm wurde in C# geschrieben und ermöglicht es Ihnen, viele SQL -Dateien zu ziehen und zu löschen und sie gegen eine Datenbank auszuführen.
Sie können verwenden Batch -Compiler Wenn Sie für SMSS add-In add-Ins addieren, können Sie mehrere Skripte gleichzeitig ausführen, SQLCMD-Skripte erstellen oder in eine *.sql-Datei konsolidieren.
Ein Batch -Trick
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