Контролирование создания добавленных файлов во время наката

Как правило, изменения файлов и файловых групп после полного резервного копирования обрабатываются прозрачно. При добавлении файла в базу данных при ее восстановлении после создания последней резервной копии файловой группы проще всего разрешить автоматическое воссоздание всех файлов в восстанавливаемой базе данных. Однако при этом без всякой надобности могут быть воссозданы и неповрежденные файлы, доступные только для чтения. Производя восстановление для решения известной изолированной проблемы, эффективность этой операции можно повысить, восстанавливая только те файлы, в которых проявляется данная проблема.

ПримечаниеПримечание

При восстановлении резервной копии, содержащей файлы, которые компонент SQL Server Database Engine собирается удалить, он пропускает для этих файлов фазы копирования и повтора. Сведения об этих фазах см. в разделе Основные сведения о восстановлении из резервных копий и по журналам в SQL Server.

Решение о создании файла при восстановлении данных принимается на основе того, указаны ли в инструкции RESTORE DATABASE файлы или страницы:

  • Конкретные файлы или страницы не указаны

    Это обычный сценарий. Встретив в журнале запись, добавляющую файл в базу данных, механизм восстановления данных автоматически создает файл и добавляет его в набор данных наката. Нюансы этой операции зависят от того, указаны ли в инструкции RESTORE DATABASE какие-либо файловые группы. Если никакие файловые группы не указаны, создаются все новые файлы, после чего они добавляются в набор данных наката. Если указаны какие-либо файловые группы, новый файл создается и добавляется в набор данных наката только в том случае, если файл относится к указанной файловой группе.

    Рекомендации: В большинстве случаев при восстановлении данных указывать определенные файлы не следует — это обеспечивает возможность автоматического воссоздания любых файлов, созданных зарегистрированными транзакциями.

  • Конкретные файлы или страницы указаны

    Конкретные файлы или страницы, указанные в инструкции RESTORE DATABASE, определяют точный набор данных наката. Если указаны файлы или страницы, восстановление данных точно соответствует инструкциям; при этом восстанавливаются только заданные элементы.

    Файлы, не указанные в инструкции, считаются правильными и не создаются на основе журнала. Таким образом, при восстановлении журнала из резервной копии, содержащей операцию добавления файла, нужно указать имя добавляемого файла в инструкции RESTORE.

Оставшаяся часть этого раздела описывает, как идентифицировать файлы, содержащие операции добавления файлов, и как гарантировать, что эти файлы будут воссозданы при выполнении последовательности восстановления.

Идентификация файлов журналов, содержащих операции добавления файлов

Определить файл журнала, содержащий операцию добавления файлов, можно следующими способами.

  • Можно использовать номер LSN создания файла (create_lsn). Они доступны в представлениях каталогов sys.database_files и sys.master_files.

  • Можно извлечь сведения о содержимом резервных копий из таблиц журналов резервного копирования, хранящихся в базе данных msdb, или при помощи инструкции RESTORE FILELISTONLY. Дополнительные сведения см. в разделе Инструкция RESTORE FILELISTONLY (Transact-SQL).

Восстановление файлов или страниц без полной резервной копии

При выполнении восстановления журнала или разностного восстановления можно указать список файлов, список страниц или файловую группу. Это позволяет восстанавливать файлы или страницы, не имеющие полной резервной копии. Восстановление файла или страницы из разностной резервной копии или резервной копии журналов является исключением из правила, согласно которому последовательность восстановления должна начинаться с полной резервной копии данных.

Базовый синтаксис восстановления данных из разностной резервной копии файлов:

RESTORE DATABASE имя_базы_данных <список_страниц_файлов_из_файловых_групп> FROM <разностная резервная копия>

Базовый синтаксис восстановления данных из резервной копии журналов таков:

RESTORE DATABASE имя_базы_данных <список_страниц_файлов_из_файловых_групп> FROM <резервная копия журналов>