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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top