Perché usiamo FILE = 1 negli script per ripristinare un database


13

Di recente, quando mi sono imbattuto nello script per il ripristino di un database, ho avuto dei dubbi sul perché dobbiamo usare " FILE = 1 "? Non possiamo ripristinare un database senza quella dichiarazione !? Fondamentalmente, a cosa serve?

Risposte:


22

È consentito salvare più di un backup in un file di backup (ad es. Dispositivo). La FILEclausola consente di accedere a una particolare operazione di backup quando ce ne sono diverse tra cui scegliere all'interno del .bakfile.

Per ulteriori informazioni sulle varie opzioni del comando RESTORE , consultare la seguente documentazione MSDN per gli argomenti RESTORE .

Se guardi nella sezione Opzioni set di backup , troverai:

FILE = { backup_set_file_number | @ backup_set_file_number }

Identifica il set di backup da ripristinare. Ad esempio, un backup_set_file_number di 1 indica il primo set di backup sul supporto di backup e un backup_set_file_number di 2 indica il secondo set di backup. È possibile ottenere il backup_set_file_number di un set di backup utilizzando l'istruzione RESTORE HEADERONLY.

Se non specificato, il valore predefinito è 1, ad eccezione di RESTORE HEADERONLY, nel qual caso vengono elaborati tutti i set di backup nel set di supporti. Per ulteriori informazioni, consultare "Specifica di un set di backup" più avanti in questo argomento.

Importante
Questa opzione FILE non è correlata all'opzione FILE per specificare un file di database, FILE = { logical_file_name_in_backup | @ logical_file_name_in_backup_var }.

Sì, si dovrebbe essere in grado di ripristinare, senza la FILE = 1quale 1è il comunque di default. E se hai sempre un solo set di backup in un file di backup, non dovrebbe costituire un problema.

Un esempio per illustrare quando si utilizza l' FILEopzione è il seguente, che è l' esempio B dalla pagina MSDN del comando RESTORE (collegata sopra). Mostra di eseguire due ripristini da un singolo file di backup: il primo RESTOREè il backup COMPLETO e il secondo RESTOREè il backup DIFFerenziale.

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;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.