web-dev-qa-db-fra.com

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

Récemment, lorsque je suis tombé sur le script pour restaurer une base de données, j'ai eu un doute sur la raison pour laquelle nous devons utiliser " FILE = 1 = "? Ne pouvons-nous restaurer une base de données sans cette déclaration!? Fondamentalement, à quoi sert-il?

13

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

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

Si vous regardez sous la section Options de 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 sur 1 indique le premier jeu de sauvegarde sur le support de sauvegarde et un backup_set_file_number sur 2 indique le deuxième jeu de sauvegarde. Vous pouvez obtenir le backup_set_file_number d'un jeu de sauvegarde en utilisant 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 supports sont traités. Pour plus d'informations, consultez "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 | @ logic_file_name_in_backup_var}.

Oui, vous devriez pouvoir restaurer sans le FILE = 1 comme 1 est de toute façon la valeur par défaut. 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'option FILE est le suivant, qui est 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: le premier RESTORE est la sauvegarde COMPLÈTE et le second RESTORE est 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;
22
Solomon Rutzky