Database
 sql >> Datenbank >  >> RDS >> Database

Migration von SQL-Datenbanken mit der Befehlszeile

Was ist, wenn Sie Dutzende von SQL-Datenbanken haben und das manuelle Sichern/Wiederherstellen jeder Datenbank zu zeitaufwändig für Ihr Projekt ist? Kein Problem! Wir können eine Methode schreiben, die alle Datenbanken auf einmal exportiert und importiert, ohne dass ein manueller Eingriff erforderlich ist. Hilfe beim Übertragen von SQL-Anmeldungen und gespeicherten Prozeduren und Ansichten finden Sie in unserem Artikel MSSQL-Migration mit SSMS.

Datenbanken auf dem Quellserver sichern

1. Öffnen Sie SSMS (Microsoft SQL Server Management Studio) auf dem Quellserver, melden Sie sich bei der SQL-Instanz an und öffnen Sie ein Fenster „Neue Abfrage“. Führen Sie die folgende Abfrage aus:

SELECT name FROM master.sys.databases

Dieser Befehl gibt eine Liste aller MSSQL-Datenbanken auf Ihrem Server aus. Um diese Liste herauszukopieren, klicken Sie irgendwo in die Ergebnisse und verwenden Sie die Tastenkombination STRG+A (Befehlstaste + A für Mac-Benutzer), um alle Datenbanken auszuwählen. Nachdem Sie alle Datenbanken markiert haben, klicken Sie mit der rechten Maustaste und wählen Sie Kopieren.

2. Öffnen Sie Notepad, fügen Sie Ihre Ergebnisse ein und löschen Sie alle Datenbanken (im neu kopierten Notepad-Text), die Sie NICHT migrieren möchten, sowie die folgenden Einträge:

  • Meister
  • tempdb
  • Modell
  • msdb

Diese Einträge sind die Datenbanken des Systems und müssen nicht kopiert werden. Stellen Sie sicher, dass Sie alles löschen, außer explizit die Datenbanken, die Sie migrieren müssen. Sie sollten jetzt eine Liste aller erforderlichen Datenbanken haben, die durch eine Linie getrennt sind. d.h.

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Speichern Sie dieses Ergebnis auf dem Computer als C:\databases.txt .

4. Erstellen Sie ein neues Notepad-Fenster, kopieren Sie Folgendes in das Dokument und speichern Sie es unter C:\db-backup.bat

mkdir %systemdrive%\dbbackups
for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%\dbbackups\%%a.bak' WITH STATS" )

5. Nachdem Sie die Datei nun als C:\db-backup.bat gespeichert haben, navigieren Sie zum Start Menü und geben Sie cmd ein und klicken Sie mit der rechten Maustaste auf Eingabeaufforderung um Als Administrator ausführen auszuwählen .Geben Sie den folgenden Befehl ein:

cd C:\

Und drücken Sie die Eingabetaste. Geben Sie danach db-backup.bat ein und drücken Sie erneut die Eingabetaste.

An diesem Punkt haben Ihre Datenbanken mit dem Export begonnen und Sie sehen den prozentualen Fortschritt jedes Datenbankexports (siehe Abbildung unten).

Beachten Sie alle fehlgeschlagenen Datenbanken, da Sie die Batch-Datei nach Abschluss erneut ausführen können, wobei nur die möglicherweise fehlgeschlagenen Datenbanken verwendet werden. Wenn die Datenbanken nicht gesichert werden können, beachten Sie die Fehlermeldung, die in der Eingabeaufforderung angezeigt wird, beheben Sie den Fehler, indem Sie die vorhandene Datei C:\databases.txt so ändern, dass sie nur die ausgefallenen Datenbanken enthält, und führen Sie db-backup.bat erneut aus bis alle Datenbanken erfolgreich exportiert wurden.

Datenbanken auf dem Zielserver wiederherstellen

Sie haben jetzt den Ordner C:\dbbackups\ die .bak-Dateien für jede Datenbank enthält, die Sie migrieren möchten. Sie müssen den Ordner und kopieren Ihre C:\databases.txt Datei auf den Zielserver. Es gibt zahlreiche Möglichkeiten, Ihre Daten auf den Zielserver zu verschieben; Sie können USB, Robocopy oder FTP verwenden. Der Ordner auf Laufwerk C des Zielservers sollte C:\dbbackups heißen . Es ist wichtig, die Datei genau zu benennen, da unser Skript hier nach den .bak-Dateien sucht. Stellen Sie sicher, dass der Zielserver auch Ihre C:\databases.txt-Datei hat, da unser Skript hier nach den Datenbanknamen sucht.

1. Öffnen Sie einen Notepad und kopieren/fügen Sie Folgendes in das Dokument ein und speichern Sie es als C:\db-restore.bat

for /F "tokens=*" %%a in (C:\databases.txt) do (
sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%\dbbackups\%%a.bak' WITH RECOVERY"
)

2. Speichern Sie die Datei unter C:\db-restore .Fledermaus

3. Navigieren Sie zum Startmenü und geben Sie cmd ein .

4. Klicken Sie mit der rechten Maustaste auf Eingabeaufforderung und wählen Sie Als Administrator ausführen . Geben Sie den folgenden Befehl ein:

cd C:\

und drücken Sie die Eingabetaste. Geben Sie nun db-restore.bat ein und drücken Sie die Eingabetaste.

Ihre Datenbanken haben jetzt mit dem Import begonnen. Sie sehen den Prozentsatz der Wiederherstellung jeder Datenbank und die Meldung „DATENBANK WIEDERHERSTELLEN erfolgreich verarbeitet “ für jede Datenbank, die erfolgreich verarbeitet wurde.

Beachten Sie alle fehlgeschlagenen Datenbanken, da Sie die Batch-Datei nach Abschluss erneut ausführen können, indem Sie nur die fehlgeschlagenen Datenbanken verwenden. Wenn die Datenbanken nicht gesichert werden können, notieren Sie sich die an der Eingabeaufforderung angezeigte Fehlermeldung, beheben Sie den Fehler (Sie können die Batchdatei nach Bedarf ändern), ändern Sie C:\databases.txt so, dass nur die fehlgeschlagenen Datenbanken enthalten sind, und re - Führen Sie db-restore.bat aus, bis alle Datenbanken erfolgreich exportiert wurden.

Herzlichen Glückwunsch, Sie haben jetzt alle Ihre Datenbanken auf dem neuen Server gesichert und wiederhergestellt. Wenn beim Testen der SQL-Verbindungen auf dem Zielserver Anmeldeprobleme auftreten, lesen Sie den Abschnitt Migrieren von Microsoft SQL-Anmeldungen (Ankerlink) Abschnitt dieses Artikels und befolgen Sie die darin enthaltenen Schritte. Informationen zum Migrieren von Ansichten oder gespeicherten Prozeduren finden Sie unter Migrieren von Ansichten und gespeicherten Prozeduren Sektion. Jeder SQL-Server hat seine eigenen Konfigurationen und Hindernisse, aber wir hoffen, dass dieser Artikel Ihnen eine solide Grundlage für Ihre Microsoft SQL Server-Migration gegeben hat.