Почему мы используем FILE = 1 в скриптах для восстановления базы данных

13

Недавно, когда я натолкнулся на скрипт для восстановления базы данных, у меня возникло сомнение, почему мы должны использовать « FILE = 1 »? Разве мы не можем восстановить базу данных без этого заявления? В основном, для чего он используется?

Сунил Кумар Мачинени
источник

Ответы:

22

Вам разрешено сохранять более одной резервной копии в файле резервной копии (например, на устройстве). Предложение FILEпозволяет получить доступ к определенной операции резервного копирования, когда в .bakфайле есть несколько вариантов выбора .

Дополнительные сведения о различных параметрах команды RESTORE см. В следующей документации MSDN для аргументов RESTORE .

Если вы заглянете в раздел « Параметры резервного набора », вы найдете:

FILE = { backup_set_file_number | @ backup_set_file_number }

Определяет набор резервных копий для восстановления. Например, backup_set_file_number из 1 указывает первый резервный набор на резервный носитель и backup_set_file_number из 2 обозначает второй набор резервного копирования. Вы можете получить backup_set_file_number набора резервных копий, используя инструкцию RESTORE HEADERONLY.

Если не указано, по умолчанию используется значение 1, за исключением RESTORE HEADERONLY, и в этом случае обрабатываются все резервные наборы в наборе носителей. Дополнительные сведения см. В разделе «Указание набора резервных копий» далее в этом разделе.

Важно!
Этот параметр FILE не связан с параметром FILE для указания файла базы данных, FILE = { logic_file_name_in_backup | @ logic_file_name_in_backup_var }.

Да, вы должны быть в состоянии восстановить без , FILE = 1как 1это в любом случае по умолчанию. И если у вас есть только один набор резервных копий в файле резервной копии, тогда это не должно вызывать проблем.

Ниже приведен пример, иллюстрирующий использование этой FILEопции: пример B со страницы MSDN с командой RESTORE (ссылка выше). В нем показано, как выполнить два восстановления из одного файла резервной копии: первая - это полная резервная RESTOREкопия, а вторая RESTORE- дифференциальная резервная копия.

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;
Соломон Руцкий
источник