Администрирование · 10 мин
Как восстановить 1С из bak-файла
Пошаговая инструкция по восстановлению базы 1С из bak-файла через SQL Server Management Studio: требования, проверка результата, типичные ошибки и FAQ.
Файл с расширением .bak — это резервная копия базы данных Microsoft SQL Server, в которой хранится клиент-серверная база 1С. Восстановление из такого файла выполняется не в конфигураторе 1С, а средствами SQL Server — чаще всего через SQL Server Management Studio (SSMS). Это принципиальный момент: попытка открыть bak-файл напрямую в 1С или загрузить его как dt-выгрузку ни к чему не приведёт.
Процедура занимает от нескольких минут до нескольких часов в зависимости от размера базы и состоит из трёх этапов: подготовка, собственно восстановление в SQL Server и подключение восстановленной базы к серверу 1С или прописывание её в списке информационных баз. Ниже разобран каждый этап с проверками результата и типичными ошибками.
Убедитесь, что у вас именно bak-файл SQL Server
Перед началом работы важно не перепутать форматы резервных копий. В экосистеме 1С встречаются два разных типа файлов, и путаница между ними — частая причина неудачного «восстановления».
Файл .bak создаётся штатными средствами SQL Server (вручную через SSMS, планом обслуживания или скриптом BACKUP DATABASE) и содержит полную копию базы данных на уровне СУБД. Файл .dt — это выгрузка информационной базы средствами конфигуратора 1С, и восстанавливается он совершенно другим способом, через «Загрузить информационную базу».
Сравнение форматов копий
Восстанавливается через SSMS или T-SQL. Подходит для клиент-серверных баз, сохраняет всё содержимое базы данных целиком.
Загружается в конфигураторе через «Загрузить информационную базу». Подходит для переноса между платформами и СУБД, но требует больше времени на больших базах.
Если файл получен от администратора или хостера и вы не уверены в его происхождении, уточните, как именно он создавался. Файл размером в несколько гигабайт, снятый с рабочего сервера, почти наверняка является SQL-бэкапом.
Проверьте требования перед восстановлением
Главное ограничение — версия SQL Server. Базу, скопированную на более новой версии SQL Server, нельзя восстановить на более старой: обратной совместимости у bak-файлов нет. Например, копию с SQL Server 2019 не получится развернуть на SQL Server 2016. В обратную сторону (со старой версии на новую) восстановление обычно проходит без проблем.
Второе условие — достаточно свободного места на диске. Восстановленная база займёт примерно столько же места, сколько занимала исходная, а сам bak-файл при этом тоже должен где-то лежать. Ориентируйтесь на запас: размер bak плюс ожидаемый размер базы плюс место под временный рост журнала транзакций.
Третье условие — права. У учётной записи, под которой вы работаете в SSMS, должны быть права на восстановление базы (роль sysadmin или dbcreator с дополнительными разрешениями), а у службы SQL Server — доступ на чтение к папке с bak-файлом. Частая ситуация: файл лежит на рабочем столе пользователя, и SQL Server его просто «не видит» из-за отсутствия NTFS-прав.
Восстановите базу через SQL Server Management Studio
Запустите SSMS и подключитесь к нужному экземпляру SQL Server. Если вы разворачиваете копию как новую базу (например, для тестирования), восстановление выполняется в несколько шагов.
- 1Щёлкните правой кнопкой по узлу «Базы данных» и выберите «Восстановить базу данных» (Restore Database).
- 2В поле «Источник» выберите «Устройство», укажите путь к bak-файлу и подтвердите выбор.
- 3В поле «Назначение» задайте имя новой базы — например, Trade_Restore, чтобы не перепутать с рабочей.
- 4На вкладке «Файлы» проверьте пути к файлам данных и журнала: они должны указывать на существующие папки с достаточным местом.
- 5Если восстанавливаете поверх существующей базы, на вкладке «Параметры» отметьте «Перезаписать существующую базу данных» (WITH REPLACE) — только убедившись, что текущая копия сохранена.
- 6Нажмите OK и дождитесь сообщения об успешном завершении восстановления.
Для больших баз процесс может занять продолжительное время, и прогресс в процентах отображается в окне восстановления. Не прерывайте операцию, даже если кажется, что она «зависла»: на слабых дисках восстановление базы в сотни гигабайт идёт долго.
Альтернатива: восстановление скриптом T-SQL
Тот же результат даёт команда RESTORE DATABASE. Она удобна, когда операцию нужно повторять регулярно или выполнять по расписанию.
RESTORE DATABASE [Trade_Restore]
FROM DISK = N'D:\Backups\trade_backup.bak'
WITH FILE = 1,
MOVE N'Trade_Data' TO N'D:\SQLData\Trade_Restore.mdf',
MOVE N'Trade_Log' TO N'D:\SQLData\Trade_Restore.ldf',
NOUNLOAD, STATS = 10;Логические имена файлов (в примере Trade_Data и Trade_Log) узнают командой RESTORE FILELISTONLY FROM DISK с указанием того же bak-файла. Параметр MOVE нужен, если пути к файлам на текущем сервере отличаются от тех, что были на сервере-источнике, — без него восстановление завершится ошибкой.
Подключите восстановленную базу к 1С
Само по себе восстановление в SQL Server не делает базу доступной пользователям 1С: нужно зарегистрировать её в кластере серверов 1С или в списке баз на клиенте. Способ зависит от архитектуры.
Если используется сервер 1С:Предприятия, откройте консоль управления сервером, найдите нужный кластер и создайте новую информационную базу: укажите имя, тип СУБД MS SQL Server, имя сервера баз данных и точное имя восстановленной базы. Параметр «Создать базу данных в случае её отсутствия» отмечать не нужно — база уже существует. Если восстановленная база имеет то же имя, что и старая, а старая удалена, достаточно проверить существующую запись в кластере.
Если база разворачивается для локальной проверки без сервера 1С, при добавлении базы в список на клиенте выберите вариант «На сервере 1С:Предприятия» или «На компьютере» в зависимости от конфигурации и укажите параметры подключения к SQL Server. Для развёртывания копии в файловом варианте bak-файл не подходит — сначала потребуется восстановить базу в SQL Server, затем выгрузить её в dt через конфигуратор.
Проверьте результат восстановления
Успешное сообщение SSMS — только половина проверки. Убедитесь, что база реально открывается и содержит ожидаемые данные.
Как проверить результат
База в статусе Online, без пометок Restoring или Suspect
База висит в Restoring — вероятно, восстановлен неполный набор копий (нужен WITH RECOVERY)
База открывается, списки документов и справочников заполнены
Ошибка соединения с СУБД или пустые списки
Последние документы соответствуют дате создания копии
Данные заметно старше ожидаемой даты — восстановлен не тот файл или не тот набор бэкапов
Нет ошибок целостности после восстановления
Ошибки повреждения страниц — стоит выполнить DBCC CHECKDB
Если база восстановлена из цепочки копий (полная плюс разностные или копии журнала), помните: промежуточные восстановления выполняются с параметром NORECOVERY, и только последняя часть — с RECOVERY. База в состоянии Restoring недоступна для подключения, и это нормально до завершения всей цепочки.
Типичные ошибки и как их избежать
Отдельно стоит сказать о ситуации, когда bak-файл оказался повреждён: недокачан, испорчен при записи на носитель или обрезан. В этом случае SSMS выдаст ошибку чтения заголовка или контрольной суммы. Шансы восстановить данные из битого файла невысоки; надёжнее запросить копию заново или поднять предыдущую. Именно поэтому рекомендуется периодически проверять работоспособность бэкапов тестовым восстановлением, а не только факт их создания.
Как выбрать действие
FAQ
Можно ли открыть bak-файл напрямую в 1С?
Нет. Платформа 1С не работает с bak-файлами: это формат резервных копий SQL Server. Сначала база восстанавливается средствами СУБД (SSMS или командой RESTORE DATABASE), и только потом подключается к 1С как информационная база.
Чем bak отличается от dt-выгрузки?
Bak — копия на уровне SQL Server, содержит базу данных целиком и восстанавливается только на SQL Server той же или более новой версии. Dt — выгрузка средствами 1С, независима от СУБД и подходит для переноса между файловым и клиент-серверным вариантами, но на больших базах выгрузка и загрузка занимают заметно больше времени.
База после восстановления висит в статусе Restoring. Что делать?
Это значит, что восстановление выполнено с параметром NORECOVERY — обычно при работе с цепочкой копий. Если все части уже восстановлены, выполните команду RESTORE DATABASE [ИмяБазы] WITH RECOVERY — база перейдёт в рабочее состояние без потери данных.
Можно ли восстановить только часть данных из bak, например один документ?
Штатно — нет: bak восстанавливается целиком. Практический приём — развернуть копию под отдельным именем, найти нужные данные в копии и перенести их в рабочую базу вручную или обработкой. Это стандартный способ вернуть ошибочно удалённые документы.
Сколько места нужно для восстановления?
Ориентируйтесь на размер исходной базы данных, а не на размер bak-файла: сжатая копия может быть в несколько раз меньше развёрнутой базы. Дополнительно нужен запас под журнал транзакций и сам файл копии на диске.
Безопасно ли восстанавливать копию на том же сервере, где работает боевой сервер?
Да, если восстанавливать под другим именем базы и не использовать WITH REPLACE по отношению к рабочей базе. Главные меры предосторожности: достаточно места на диске, отдельное имя базы и отключённые регламентные задания в копии.
Что важно запомнить
Bak-файл восстанавливается средствами SQL Server, а не 1С. Проверьте совместимость версий СУБД, сохраните копию текущей базы перед перезаписью, используйте MOVE при смене путей и RECOVERY в конце цепочки. После подключения к 1С отключите регламентные задания в копии и проверьте актуальность данных.