Pourquoi utilisons-nous FILE = 1 dans les scripts pour restaurer une base de données

13

Récemment, lorsque je suis tombé sur le script de restauration d'une base de données, je me suis demandé pourquoi nous devons utiliser " FILE = 1 "? Ne pouvons-nous restaurer une base de données sans cette déclaration!? Fondamentalement, à quoi sert-il?

Sunil Kumar Machineni
la source

Réponses:

22

Vous êtes autorisé à enregistrer plusieurs sauvegardes dans un fichier de sauvegarde (c'est-à-dire un appareil). La FILEclause vous permet d'accéder à une opération de sauvegarde particulière lorsqu'il y en a plusieurs dans le .bakfichier.

Pour plus d'informations sur les différentes options de la commande RESTORE , consultez la documentation MSDN suivante pour les arguments RESTORE .

Si vous regardez sous la section Options du jeu de sauvegarde , vous trouverez:

FILE = { backup_set_file_number | @ backup_set_file_number }

Identifie le jeu de sauvegarde à restaurer. Par exemple, un backup_set_file_number de 1 indique le premier jeu de sauvegarde sur le support de sauvegarde et un backup_set_file_number de 2 indique le deuxième jeu de sauvegarde. Vous pouvez obtenir le backup_set_file_number d'un jeu de sauvegarde à l'aide de l'instruction RESTORE HEADERONLY.

Lorsqu'il n'est pas spécifié, la valeur par défaut est 1, à l'exception de RESTORE HEADERONLY, auquel cas tous les jeux de sauvegarde du jeu de médias sont traités. Pour plus d'informations, voir «Spécification d'un jeu de sauvegarde», plus loin dans cette rubrique.

Important
Cette option FILE n'est pas liée à l'option FILE pour spécifier un fichier de base de données, FILE = { logic_file_name_in_backup | @ logique_file_name_in_backup_var }.

Oui, vous devriez être en mesure de restaurer sans le FILE = 1comme 1c'est la valeur par défaut de toute façon. Et si vous n'avez qu'un seul jeu de sauvegarde dans un fichier de sauvegarde, cela ne devrait pas poser de problème.

Un exemple pour illustrer l'utilisation de l' FILEoption est le suivant, qui est l' exemple B de la page MSDN de la commande RESTORE (liée ci-dessus). Il montre que vous effectuez deux restaurations à partir d'un seul fichier de sauvegarde: la première RESTOREest la sauvegarde COMPLÈTE et la seconde RESTOREest la sauvegarde DIFFérentielle.

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
la source