Warum verwenden wir FILE = 1 in Skripten zum Wiederherstellen einer Datenbank?

13

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?

Sunil Kumar Machineni
quelle

Antworten:

22

Sie können mehr als eine Sicherung in einer Sicherungsdatei (dh einem Gerät) speichern. Mit dieser FILEKlausel können Sie auf einen bestimmten Sicherungsvorgang zugreifen, wenn in der .bakDatei 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 = 1als 1der 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 FILEOption 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 RESTOREist die vollständige Sicherung und die zweite RESTOREdie 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;
Solomon Rutzky
quelle