Dlaczego używamy FILE = 1 w skryptach do przywracania bazy danych

13

Ostatnio, kiedy natknąłem się na skrypt służący do przywracania bazy danych, miałem wątpliwości, dlaczego musimy użyć „ FILE = 1 ”? Czy nie możemy przywrócić bazy danych bez tego oświadczenia !? Zasadniczo do czego służy?

Sunil Kumar Machineni
źródło

Odpowiedzi:

22

Możesz zapisać więcej niż jedną kopię zapasową w pliku kopii zapasowej (tj. Urządzeniu). FILEKlauzula umożliwia dostęp do konkretnej operacji tworzenia kopii zapasowej, gdy istnieje wiele do wyboru w .bakpliku.

Aby uzyskać więcej informacji na temat różnych opcji polecenia RESTORE , zapoznaj się z następującą dokumentacją MSDN dotyczącą argumentów RESTORE .

Jeśli zajrzysz do sekcji Opcje zestawu kopii zapasowych , znajdziesz:

PLIK = { numer_zestawu_ kopii zapasowych | @ backup_set_file_number }

Określa zestaw kopii zapasowych do przywrócenia. Na przykład, backup_set_file_number od 1 oznacza pierwszy zestaw kopii zapasowej na nośniku i backup_set_file_number od 2 oznacza drugi zestaw zapasowego. Można uzyskać backup_set_file_number zestawu kopii zapasowych za pomocą przywracania HEADERONLY oświadczenie.

Jeśli nie zostanie określony, wartością domyślną jest 1, z wyjątkiem PRZYWRACANIA SŁUCHAWEK, w którym to przypadku przetwarzane są wszystkie zestawy kopii zapasowych w zestawie nośników. Aby uzyskać więcej informacji, zobacz „Określanie zestawu kopii zapasowych” w dalszej części tego tematu.

Ważne
Ta opcja PLIKU nie jest powiązana z opcją PLIK do określania pliku bazy danych, PLIK = { nazwa_pliku_logicznego_w kopii zapasowej | @ nazwa_pliku_logicznego_in_backup_var }.

Tak, powinieneś być w stanie przywrócić bez FILE = 1jak 1jest domyślnym tak. A jeśli kiedykolwiek masz tylko jeden zestaw kopii zapasowych w pliku kopii zapasowej, nie powinno to stanowić problemu.

Przykład pomagający zilustrować, kiedy należy skorzystać z tej FILEopcji, to przykład B ze strony MSEST polecenia PRZYWRÓĆ (link powyżej). Pokazuje wykonanie dwóch przywracań z jednego pliku kopii zapasowej: pierwszy RESTOREto PEŁNA kopia zapasowa, a drugi RESTOREto DIFFerential kopia zapasowa.

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
źródło