Sichern und Wiederherstellen Ihrer SQL Server-Datenbank über die Befehlszeile
Der wichtigste Teil eines SQL Server-Wartungsplans ist das regelmäßige Sichern Ihrer Datenbanken. Um eine Datenbank zu sichern, können Sie die entsprechenden MDF- und LDF-Dateien der Datenbank nicht einfach kopieren, da diese von SQL Server gesperrt sind. Stattdessen müssen Sie über SQL Server eine echte Sicherungsdatei erstellen.
Während dies durch die Entwicklung eines Wartungsplans in SQL Management Studio durchgeführt werden kann, bieten die kostenlosen Express-Editionen von SQL Server diese Schnittstelle nicht. Um dies zu umgehen, können Sie Ihre Datenbanken problemlos sichern, indem Sie den folgenden Befehl ausführen, während Sie als Windows-Administrator angemeldet sind:
SqlCmd -E -S Servername -Q "BACKUP-DATENBANK [Name_der_Datenbank] TO DISK =" X: PathToBackupLocation [Name_der_Datenbank] .bak ""
Die Beispiele unten helfen.
Standard-SQL Server-Instanz:
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [MyDB] TO DISK =" D: BackupsMyDB.bak ""
Benannte SQL Server-Instanz:
SqlCmd -E -S MyServerMyInstance -Q "BACKUP-DATENBANK [MyDB] TO DISK =" D: BackupsMyDB.bak ""
Erstellen Sie eine vollständig wiederherstellbare Sicherungskopie von "MyDB" in der Datei "D: BackupsMyDB.bak", die für die Notfallwiederherstellung verwendet werden kann. Natürlich können Sie den Sicherungspfad und die Sicherungsdatei beliebig ändern. Stellen Sie jedoch sicher, dass Sie einen Ordnerpfad angeben, der auf dem lokalen Computer vorhanden ist. Diese Sicherungsdatei kann dann auf ein Bandlaufwerk oder einen anderen externen Sicherungsspeicherort kopiert werden.
Eine häufig gestellte Frage lautet: "Kann eine Sicherungsdatei auf einem zugeordneten Laufwerk oder einem UNC-Speicherort erstellt werden?" Und die schnelle Antwort lautet "Nein". Der Grund ist, dass der SQL Server-Windows-Dienst als Benutzerkonto ausgeführt wird, das nur Zugriff auf den lokalen Computer hat. Sie können das Konto ändern, unter dem der Dienst ausgeführt wird. Dies wird jedoch aus Sicherheitsgründen dringend empfohlen.
Wiederherstellen einer Datenbanksicherung über die Befehlszeile
Um eine Datenbank aus einer Sicherungsdatei wiederherzustellen, verwenden Sie einfach den Befehl:
SqlCmd -E -S Servername -Q "RESTORE DATABASE [Name_der_Datenbank] FROM DISK =" X: PathToBackupFile [Dateiname] .bak ""
Zum Beispiel:
SqlCmd -E -S MyServer -Q "RESTORE DATABASE [MyDB] FROM DISK =" D: BackupsMyDB.bak ""
Der obige Befehl stellt eine Sicherung von "MyDB" aus den Daten wieder her, die in der Sicherungsdatei "D: BackupsMyDB.bak" gespeichert sind. Alle Änderungen, die seit der Erstellung der Sicherungsdatei an MyDB vorgenommen wurden, gehen verloren.
Beachten Sie bei der Verwendung des obigen Befehls, dass er auf demselben SQL Server verwendet werden soll, auf dem die entsprechende Sicherungsdatei erstellt wurde. SQL-Sicherungsdateien speichern Informationen hinter den Kulissen, die steuern, wo und wie die Datendateien in der Sicherungsdatei kopiert werden. Wenn Sie eine Sicherung von einem anderen SQL Server wiederherstellen, stimmen die Pfadpositionen in der Sicherungsdatei möglicherweise nicht mit dem Server überein, auf dem Sie die Wiederherstellung durchführen, und es wird ein Fehler angezeigt. Dies lässt sich zwar umgehen, es ist jedoch viel einfacher, Sicherungen, die auf einem anderen SQL Server erstellt wurden, mithilfe des Tools SQL Management Studio wiederherzustellen.
Hinweis: Die obigen Befehle funktionieren ab SQL 2005 (beliebige Edition). Ersetzen Sie für SQL 2000 und frühere Versionen 'SqlCmd' durch 'oSql'..