Als ich kürzlich auf das Skript zum Wiederherstellen einer Datenbank gestoßen bin, habe ich Zweifel, warum wir " FILE = 1 " verwenden müssen. Können wir ohne diese Anweisung keine Datenbank wiederherstellen? Grundsätzlich, wofür wird es verwendet?
Als ich kürzlich auf das Skript zum Wiederherstellen einer Datenbank gestoßen bin, habe ich Zweifel, warum wir " FILE = 1 " verwenden müssen. Können wir ohne diese Anweisung keine Datenbank wiederherstellen? Grundsätzlich, wofür wird es verwendet?
Antworten:
Sie können mehr als eine Sicherung in einer Sicherungsdatei (dh einem Gerät) speichern. Mit dieser FILE
Klausel können Sie auf einen bestimmten Sicherungsvorgang zugreifen, wenn in der .bak
Datei mehrere zur Auswahl stehen .
Weitere Informationen zu den verschiedenen Optionen des Befehls RESTORE finden Sie in der folgenden MSDN-Dokumentation für RESTORE-Argumente .
Wenn Sie im Abschnitt Backup-Set-Optionen nachsehen , finden Sie:
FILE = { backup_set_file_number | @ backup_set_file_number }
Identifiziert den wiederherzustellenden Sicherungssatz. Beispielsweise gibt backup_set_file_number von 1 den ersten Sicherungssatz auf dem Sicherungsmedium und backup_set_file_number von 2 den zweiten Sicherungssatz an. Sie können die backup_set_file_number eines Sicherungssatzes mit der Anweisung RESTORE HEADERONLY ermitteln.
Wenn nichts angegeben ist, ist der Standardwert 1, mit Ausnahme von RESTORE HEADERONLY. In diesem Fall werden alle Sicherungssätze im Mediensatz verarbeitet. Weitere Informationen finden Sie unter "Angeben eines Sicherungssatzes" weiter unten in diesem Thema.
Wichtig
Diese Option FILE hat nichts mit der Option FILE zum Angeben einer Datenbankdatei zu tun , FILE = { Logischer_Dateiname_in_Backup | @ logical_file_name_in_backup_var }.
Ja, sollten Sie in der Lage sein , ohne die Wiederherstellung FILE = 1
als 1
der Standard sowieso. Und wenn Sie immer nur einen einzigen Backup-Satz in einer Backup-Datei haben, sollte dies kein Problem darstellen.
Ein Beispiel zur Veranschaulichung, wann Sie die FILE
Option verwenden würden, ist das folgende: Beispiel B auf der MSDN-Seite des RESTORE-Befehls (oben verlinkt). Es werden zwei Wiederherstellungen aus einer einzelnen Sicherungsdatei gezeigt: Die erste RESTORE
ist die vollständige Sicherung und die zweite RESTORE
die differenzielle Sicherung.
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 9
RECOVERY;