Frage

Ich habe eine Reihe von .sql -Dateien, die ich ausführen muss, um Änderungen anderer Entwickler in einer SQL Server 2005 -Datenbank anzuwenden. Die Dateien werden nach dem folgenden Muster benannt:

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

Gibt es eine Möglichkeit, alle auf einmal zu laufen?

War es hilfreich?

Lösung

Erstellen Sie eine .bat -Datei mit dem folgenden Befehl:

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

Platzieren Sie diese .bat -Datei in das Verzeichnis, aus dem die .SQL -Dateien ausgeführt werden sollen, doppelklicken Sie auf die .bat -Datei und Sie sind fertig!

Andere Tipps

Verwenden ZUM. Aus der Eingabeaufforderung:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
  1. Öffnen Sie im SQL Management Studio eine neue Abfrage und geben Sie alle Dateien wie unten ein

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  2. Gehen Sie zum Query -Menü in SQL Management Studio und stellen Sie sicher, dass der SQLCMD -Modus aktiviert ist
  3. Klicken Sie auf den SQLCMD -Modus. Dateien werden in Grau wie unten ausgewählt

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    
  4. Jetzt ausführen

Stellen Sie sicher, dass SQLCMD aktiviert ist, indem Sie auf die Option Abfrage> SQLCMD -Modus im Management Studio klicken.

  1. Angenommen, Sie haben vier .sql -Dateien (script1.sql,script2.sql,script3.sql,script4.sql) in einem Ordner c:\scripts.

  2. Erstellen Sie eine Hauptskriptdatei (main.sql) mit Folgendes:

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Speichern Sie die main.sql in c: scripts selbst.

  3. Erstellen Sie eine Stapeldatei mit dem Namen ExecuteScripts.bat mit den folgenden:

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    Denken Sie daran zu ersetzen <YourDatabaseName> Mit der Datenbank möchten Sie Ihre Skripte ausführen. Wenn die Datenbank beispielsweise "Mitarbeiter" ist, wäre der Befehl der folgende:

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. Führen Sie die Batch -Datei aus, indem Sie doppelt doppelt klicken.

Du könntest benutzen ApexSQL Propagate. Es ist ein kostenloses Tool, das mehrere Skripte in mehreren Datenbanken ausführt. Sie können so viele Skripte auswählen, wie Sie benötigen, und für ein oder mehrere Datenbanken (sogar mehrere Server) ausführen. Sie können Skriptsliste erstellen und speichern. Wählen Sie diese Liste jedes Mal aus, wenn Sie dieselben Skripte in der erstellten Reihenfolge ausführen möchten (mehrere Skriptlisten können auch hinzugefügt werden):

Select scripts

Wenn Skripte und Datenbanken ausgewählt werden, werden sie im Hauptfenster angezeigt. Alles, was Sie tun müssen, ist auf die Schaltfläche „Ausführen“ zu klicken, und alle Skripte werden in ausgewählten Datenbanken in der angegebenen Reihenfolge ausgeführt:

Scripts execution

Allgemeine Abfrage

Speichern Sie die folgenden Zeilen im Notizblock mit Namen batch.bat und platzieren Sie in den Ordner, in dem alle Ihre Skriptdatei vorhanden sind

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

BEISPIEL

für %% g in (*.sql) do SQLCMD /S NFGDDD23432 /d Emplyeedb -i "%% g" Pause

Wenn Sie für Sie fehlgeschlagen sind, verwenden Sie bitte den folgenden Code mit dem folgenden Code mit Nutzername und Passwort

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

für %% g in (*.sql) do SQLCMD /S NE8148Server /d Emplyeedb -U Scott -P Tiger -i "%% g" Pause

Nachdem Sie die Fledermausdatei in dem Ordner erstellt haben, in dem Ihre Skriptdateien dort sind, klicken Sie einfach auf die Fledermausdatei Ihre Skripts werden ausgeführt

Ich schrieb ein Open Source -Dienstprogramm In C# können Sie viele SQL -Dateien ziehen und fallen lassen und mit einer Datenbank ausgeführt werden.

Das Dienstprogramm hat die folgenden Funktionen:

  • Drag & Drop -Skriptdateien ziehen
  • Führen Sie ein Verzeichnis von Skriptdateien aus
  • SQL -Skript out Nachrichten während der Ausführung
  • Skript übergeben oder fehlgeschlagen, die grün und rot gefärbt sind (gelb zum Laufen)
  • Stoppen Sie die Fehleroption
  • Öffnen Sie das Skript bei der Fehleroption
  • Führen Sie den Bericht mit der Zeit für jedes Skript aus
  • Gesamtdauer
  • Testen Sie die DB -Verbindung
  • Asynchronus
  • .Net 4 & getestet mit SQL 2008
  • Single EXE -Datei
  • Die Verbindung jederzeit töten

Ich weiß, dass Sie die Befehle von OSQL oder SQLCMD verwenden können, um mehrere SQL -Dateien auszuführen. Der Nachteil ist, dass Sie ein Skript für beide Befehle erstellen müssen.

Verwenden von SQLCMD zum Ausführen mehrerer SQL -Server -Skripte

OSQL (Dies ist für SQL Server 2000)

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

@echo off
cd C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE

for %%a in (D:\abc\*.sql) do (
echo %%a
mysql --host=ip --port=3306 --user=uid--password=ped < %%a
)

STEP1: Überzeilen kopieren in Note Pad als Fledermaus.

SCHRITT2: In D Drive ABC -Ordner in allen SQL -Dateien in Abfragen, die in SQL Server ausgeführt wurden.

Schritt 3: Geben Sie IP, Benutzer -ID und Kennwort an.

Sie können ein einzelnes Skript erstellen, das alle anderen aufruft.

Legen Sie Folgendes in eine Batch -Datei ein:

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

Wenn Sie diese Stapeldatei ausführen, wird ein neues Skript mit dem Namen erstellt all.sql im selben Verzeichnis, in dem sich die Batch -Datei befindet. Es wird nach allen Dateien mit der Erweiterung suchen .sql im selben Verzeichnis, in dem sich die Batch -Datei befindet.

Sie können dann alle Skripte mithilfe verwenden sqlplus user/pwd @all.sql (oder erweitern Sie die Batch -Datei auf Anruf sqlplus Nach dem Erstellen der all.sql Skript)

Verwenden Sie den folgenden Befehl zum Ausführen jedes SQLFile im selben Verzeichnis: Verwenden Sie den folgenden Befehl:

ls | awk '{print "@"$0}' > all.sql

Dieser Befehl erstellt eine einzelne SQL -Datei mit den Namen jeder SQL -Datei im von "@" angehängten Verzeichnis.

Nach dem all.sql wird erstellt einfach ausführen all.sql Mit SQLPLUS wird dies jede SQL -Datei in der ausführen all.sql.

Wenn Sie interaktives SQL verwenden können:

1 - Erstellen Sie eine .bat -Datei mit diesem Code:

@ECHO OFF ECHO
for %%G in (*.sql) do dbisql -c "uid=dba;pwd=XXXXXXXX;ServerName=INSERT-DB-NAME-HERE" %%G
pause

2 - Ändern Sie PWD und Servername.

3 - Legen Sie die .bat -Datei in den Ordner, der .SQL -Dateien enthält, und führen Sie sie aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top