Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

Поэтапное восстановление баз MSSQL: Piecemeal Restore файловых групп

Обновлено: 26.08.2026  ·  Официальная база знаний
  • Критический сбой одного из LUN / дисков с вторичной файловой группой (Secondary Filegroup) в терабайтной базе.
  • Недопустимость длительного простоя (RTO) для ввода основной операционной деятельности предприятия в строй.
  • Необходимость поднять первичную файловую группу PRIMARY в режим Online, пока остальные файловые группы восстанавливаются.

1. Восстановление первичной файловой группы (Partial Restore)

Ключевое слово PARTIAL указывает на старт цепочки поэтапного восстановления:

-- 1. Восстановление PRIMARY файловой группы из полного бэкапа
RESTORE DATABASE [LargeEnterpriseDb] 
    FILEGROUP = 'PRIMARY'
FROM DISK = N'D:\Backups\LargeDb_Full.bak'
WITH PARTIAL, NORECOVERY, REPLACE;

-- 2. Применение последнего дифференциального бэкапа для PRIMARY (если есть)
RESTORE DATABASE [LargeEnterpriseDb] 
    FILEGROUP = 'PRIMARY'
FROM DISK = N'D:\Backups\LargeDb_Diff.bak'
WITH NORECOVERY;

-- 3. Накат цепочки логов и ввод PRIMARY в режим ONLINE
RESTORE LOG [LargeEnterpriseDb]
FROM DISK = N'D:\Backups\LargeDb_Log1.trn'
WITH RECOVERY;

На этом этапе база данных переходит в состояние ONLINE, а невосстановленные вторичные файловые группы получают статус RESTORING.

2. Фоновое восстановление вторичных файловых групп (Secondary Filegroups)

-- Восстановление файловой группы с историческими данными (например, FG_Archive)
RESTORE DATABASE [LargeEnterpriseDb] 
    FILEGROUP = 'FG_Archive'
FROM DISK = N'D:\Backups\LargeDb_Archive_FG.bak'
WITH NORECOVERY;

-- Накат логов до текущей точки согласованности базы
RESTORE LOG [LargeEnterpriseDb]
FROM DISK = N'D:\Backups\LargeDb_Log1.trn'
WITH RECOVERY;

3. Проверка статуса всех файлов и файловых групп

SELECT 
    df.name AS LogicalFileName,
    df.physical_name,
    df.state_desc AS FileState,
    fg.name AS FilegroupName
FROM sys.database_files df
LEFT JOIN sys.filegroups fg ON df.data_space_id = fg.data_space_id;
Практический опыт инженера: Для эффективного применения Piecemeal Restore заранее выносите исторические регистры и тяжелые таблицы в отдельные файловые группы и делайте их READ_ONLY. Read-Only файловые группы не требуют постоянного наката логов при восстановлении.

Частые вопросы (FAQ)

В чем главное преимущество Piecemeal Restore для 1С-баз?

Оно позволяет за несколько минут поднять ядро базы данных (Primary Filegroup с конфигурацией и оперативными таблицами), дав пользователям возможность работать, пока гигабайты прикрепленных файлов и архивов восстанавливаются в фоне.

Что произойдет, если пользователь попытается прочитать данные из файловой группы в статусе RESTORING?

Запрос завершится ошибкой 'The query processor could not produce a query plan because a table or index is residing in a filegroup that is offline or currently restoring'.

Работает ли Piecemeal Restore в редакции SQL Server Standard?

В Standard Edition поддерживается только оффлайн-восстановление файловых групп (база должна быть отключена). Онлайн-восстановление вторичных файловых групп на лету доступно только в SQL Server Enterprise.

Обязательно ли накатывать все журналы транзакций на каждую вторичную группу?

Да. Файловая группа не может быть переведена в статус Online, пока ее LSN не будет синхронизирован с текущим LSN первичной файловой группы базы данных.