К статье
Практический материал

Администрирование · 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С, и восстанавливается он совершенно другим способом, через «Загрузить информационную базу».

Сравнение форматов копий

.bak (SQL Server)

Восстанавливается через SSMS или T-SQL. Подходит для клиент-серверных баз, сохраняет всё содержимое базы данных целиком.

.dt (выгрузка 1С)

Загружается в конфигураторе через «Загрузить информационную базу». Подходит для переноса между платформами и СУБД, но требует больше времени на больших базах.

Если файл получен от администратора или хостера и вы не уверены в его происхождении, уточните, как именно он создавался. Файл размером в несколько гигабайт, снятый с рабочего сервера, почти наверняка является 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. Если вы разворачиваете копию как новую базу (например, для тестирования), восстановление выполняется в несколько шагов.

Восстановление через SSMS
  1. 1
    Щёлкните правой кнопкой по узлу «Базы данных» и выберите «Восстановить базу данных» (Restore Database).
  2. 2
    В поле «Источник» выберите «Устройство», укажите путь к bak-файлу и подтвердите выбор.
  3. 3
    В поле «Назначение» задайте имя новой базы — например, Trade_Restore, чтобы не перепутать с рабочей.
  4. 4
    На вкладке «Файлы» проверьте пути к файлам данных и журнала: они должны указывать на существующие папки с достаточным местом.
  5. 5
    Если восстанавливаете поверх существующей базы, на вкладке «Параметры» отметьте «Перезаписать существующую базу данных» (WITH REPLACE) — только убедившись, что текущая копия сохранена.
  6. 6
    Нажмите OK и дождитесь сообщения об успешном завершении восстановления.

Для больших баз процесс может занять продолжительное время, и прогресс в процентах отображается в окне восстановления. Не прерывайте операцию, даже если кажется, что она «зависла»: на слабых дисках восстановление базы в сотни гигабайт идёт долго.

Альтернатива: восстановление скриптом T-SQL

Тот же результат даёт команда RESTORE DATABASE. Она удобна, когда операцию нужно повторять регулярно или выполнять по расписанию.

sql
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 — только половина проверки. Убедитесь, что база реально открывается и содержит ожидаемые данные.

Контрольные точки

Как проверить результат

Состояние базы в SSMS
Норма

База в статусе Online, без пометок Restoring или Suspect

Тревожный признак

База висит в Restoring — вероятно, восстановлен неполный набор копий (нужен WITH RECOVERY)

Запуск конфигуратора или клиента 1С
Норма

База открывается, списки документов и справочников заполнены

Тревожный признак

Ошибка соединения с СУБД или пустые списки

Актуальность данных
Норма

Последние документы соответствуют дате создания копии

Тревожный признак

Данные заметно старше ожидаемой даты — восстановлен не тот файл или не тот набор бэкапов

Журнал ошибок SQL Server
Норма

Нет ошибок целостности после восстановления

Тревожный признак

Ошибки повреждения страниц — стоит выполнить DBCC CHECKDB

Если база восстановлена из цепочки копий (полная плюс разностные или копии журнала), помните: промежуточные восстановления выполняются с параметром NORECOVERY, и только последняя часть — с RECOVERY. База в состоянии Restoring недоступна для подключения, и это нормально до завершения всей цепочки.

Типичные ошибки и как их избежать

Типичные ошибки
01
Восстановление поверх рабочей базы без свежей копии — при ошибке или неправильном файле текущие данные теряются безвозвратно.
02
Попытка восстановить bak с новой версии SQL Server на старую — операция завершится ошибкой несовместимости, выход только в переходе на версию СУБД не ниже исходной.
03
Отсутствие прав у службы SQL Server на папку с bak-файлом — файл «не виден» в диалоге выбора, хотя в проводнике он есть.
04
Неверные пути к файлам данных при восстановлении на другой сервер — ошибка решается параметром MOVE или правкой путей на вкладке «Файлы».
05
Забытый параметр RECOVERY при восстановлении цепочки копий — база остаётся в состоянии Restoring и недоступна для 1С.
06
Активные регламентные задания в тестовой копии — копия базы начинает выполнять обмены и рассылки параллельно с рабочей системой.

Отдельно стоит сказать о ситуации, когда bak-файл оказался повреждён: недокачан, испорчен при записи на носитель или обрезан. В этом случае SSMS выдаст ошибку чтения заголовка или контрольной суммы. Шансы восстановить данные из битого файла невысоки; надёжнее запросить копию заново или поднять предыдущую. Именно поэтому рекомендуется периодически проверять работоспособность бэкапов тестовым восстановлением, а не только факт их создания.

Маршрут решения

Как выбрать действие

Нужна тестовая копия рядом с рабочей базойВосстановите bak под новым именем и зарегистрируйте отдельной информационной базой, отключив регламентные задания
Рабочая база потеряна или поврежденаВосстановите последнюю полную копию (и цепочку разностных, если есть) с RECOVERY, затем проверьте целостность
bak с более новой версии SQL Server, а целевой сервер старшеОбновите целевой SQL Server или разверните копию на подходящей версии и выгрузите данные через dt
Нужен файловый вариант 1ССначала восстановите базу в SQL Server, затем выгрузите в dt через конфигуратор и загрузите в файловую базу

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С отключите регламентные задания в копии и проверьте актуальность данных.