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

Администрирование · 10 мин

Как развернуть базу 1С из BAK-файла

Как развернуть базу 1С из bak-файла через SQL Server Management Studio: восстановление, публикация в кластере, проверка результата и типичные ошибки.

Файл с расширением .bak — это резервная копия базы данных Microsoft SQL Server, в которой хранится информационная база 1С в клиент-серверном режиме. Развернуть такую копию напрямую через конфигуратор нельзя: сначала базу восстанавливают средствами SQL Server, затем регистрируют её в кластере серверов 1С или подключают к существующему серверу. Ниже разобран полный цикл — от подготовки файла до проверки работоспособности.

Важно понимать: .bak — это не выгрузка 1С в формате .dt. Файл .dt создаётся через конфигуратор и переносится между любыми режимами работы, а .bak привязан к SQL Server и требует совместимой версии СУБД. Попытка загрузить .bak через «Загрузить информационную базу» в конфигураторе закончится ошибкой — эти форматы несовместимы.

Перед началом работы убедитесь, что у вас есть: доступ к серверу SQL Server с правами на восстановление баз (роль sysadmin или dbcreator), установленная SQL Server Management Studio (SSMS) и файл .bak, скопированный на диск сервера или доступный по сети. Также желательно знать, с какой конфигурацией и релизом 1С работала база — это понадобится на этапе проверки.

Что проверить перед восстановлением

Первое — версию SQL Server, на которой была создана копия. Резервная копия восстанавливается только на версию SQL Server равную или более новую, чем исходная. База, снятая с SQL Server 2019, не восстановится на SQL Server 2016 — обратной совместимости нет. Если версия вашего сервера ниже, обновите СУБД или попросите выгрузку в формате .dt.

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

Третье — целостность самого файла. Если .bak копировался по сети или с внешнего носителя, есть риск повреждения. Проверить файл можно командой RESTORE VERIFYONLY в SSMS — она не восстанавливает данные, а лишь подтверждает читаемость архива.

sql
RESTORE VERIFYONLY FROM DISK = 'D:\Backups\base1c.bak';

Восстановление базы через SQL Server Management Studio

Откройте SSMS и подключитесь к экземпляру SQL Server. В обозревателе объектов щёлкните правой кнопкой по узлу «Базы данных» (Databases) и выберите «Восстановить базу данных» (Restore Database). В окне мастера переключите источник на «Устройство» (Device) и укажите путь к вашему .bak-файлу.

В поле «База данных — назначение» введите новое имя базы латиницей без пробелов, например trade_copy. Не восстанавливайте копию поверх рабочей базы, если не уверены в результате: перезапись уничтожит текущие данные без возможности отката.

На вкладке «Файлы» (Files) проверьте пути размещения mdf и ldf — по умолчанию мастер может предложить пути с исходного сервера, которых у вас не существует. Укажите реальные каталоги вашего сервера. На вкладке «Параметры» (Options) оставьте состояние восстановления RESTORE WITH RECOVERY, если это единственная или последняя копия в цепочке.

Порядок действий в SSMS
  1. 1
    Подключитесь к SQL Server и откройте Restore Database
  2. 2
    Выберите источник Device и укажите путь к .bak
  3. 3
    Задайте новое имя базы назначения
  4. 4
    Проверьте пути файлов mdf и ldf на вкладке Files
  5. 5
    Запустите восстановление и дождитесь сообщения об успехе
  6. 6
    Обновите список баз и убедитесь, что база в статусе Online

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

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

sql
RESTORE DATABASE [trade_copy]
FROM DISK = 'D:\Backups\base1c.bak'
WITH MOVE 'DataLogicalName' TO 'D:\SQLData\trade_copy.mdf',
MOVE 'LogLogicalName' TO 'D:\SQLData\trade_copy_log.ldf',
REPLACE, RECOVERY;

Логические имена файлов (DataLogicalName, LogLogicalName) узнайте заранее командой RESTORE FILELISTONLY FROM DISK — они не всегда совпадают с именами физических файлов. Опцию REPLACE указывайте только если сознательно перезаписываете существующую базу.

Регистрация восстановленной базы в 1С

После восстановления в SQL Server база для 1С пока невидима — её нужно зарегистрировать. Откройте консоль администрирования серверов 1С, разверните кластер, перейдите в раздел «Информационные базы» и создайте новую базу. В свойствах укажите тип СУБД MS SQL Server, имя сервера баз данных, имя восстановленной базы (trade_copy из примера выше) и учётные данные пользователя SQL Server, под которым сервер 1С будет обращаться к базе.

При создании снимите флаг «Создать базу данных в случае её отсутствия» — база уже существует, и лишняя попытка создания вызовет ошибку. Дату блокировки регламентных заданий для тестовой копии лучше установить сразу, чтобы копия не начала выполнять обмены и рассылки наравне с рабочей базой.

Если сервера 1С нет и база разворачивается для локального просмотра, добавьте её в список информационных баз через стартовое окно 1С: «Добавить» → «На сервере 1С:Предприятия» → укажите сервер, имя базы и параметры подключения.

Проверка результата и первый запуск

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

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

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

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

Статус базы в SSMS
Норма

Online, без суффикса Restoring

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

Restoring или Suspect — восстановление не завершено или база повреждена

Вход в конфигуратор
Норма

Конфигуратор открывается, конфигурация читается

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

Ошибка соединения с СУБД — проверьте права и имя базы

Регламентные задания
Норма

Блокировка включена для тестовой копии

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

Задания активны и выполняются по расписанию

Данные в режиме предприятия
Норма

Документы и отчёты открываются за ожидаемые периоды

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

Пустые журналы, ошибки при проведении

Типичные ошибки и их решение

Ошибка «The database was backed up on a server running version...» означает несовместимость версий SQL Server — восстанавливайте на более новую СУБД. Ошибка доступа к файлу на этапе выбора .bak чаще всего связана с тем, что учётная запись службы SQL Server не имеет прав на каталог с файлом: переместите копию в каталог резервных копий сервера или выдайте права.

Сообщение «база данных используется» при восстановлении с REPLACE означает активные подключения. Завершите сеансы в консоли кластера 1С и переведите базу в single_user mode либо восстановите под другим именем. Ошибка аутентификации при подключении из 1С указывает на неверный логин/пароль SQL-пользователя или отсутствие у него прав на восстановленную базу — назначьте пользователю роль db_owner на эту базу.

Типичные ошибки
01
Восстановление поверх рабочей базы без свежей копии — потеря текущих данных без возможности отката
02
Забытые регламентные задания в тестовой копии — дублирование обменов и рассылок
03
Неверные пути mdf/ldf — сбой восстановления из-за несуществующих каталогов
04
Попытка открыть .bak через конфигуратор как .dt — формат не поддерживается
05
Отсутствие прав у SQL-пользователя 1С на восстановленную базу — ошибка соединения при входе

Когда .bak не подходит: альтернативы

Если базу нужно перенести между разными СУБД, с клиент-серверного режима в файловый или на сервер с более старой версией SQL Server, используйте выгрузку в .dt через конфигуратор на исходной системе. Формат .dt универсален, но выгрузка больших баз занимает заметно больше времени, чем копирование .bak.

Для регулярной пересылки копий между серверами с одинаковой версией SQL Server удобны дифференциальные копии и копии журнала транзакций — они меньше по объёму и быстрее восстанавливаются поверх полной копии. Для разовой задачи достаточно полной копии .bak, описанной выше.

Сравнение способов переноса базы 1С

BAK через SQL Server

Быстро для больших баз, сохраняет всё один-в-один. Ограничение: нужна совместимая версия SQL Server, только клиент-серверный режим

Выгрузка .dt

Универсально: любые режимы и СУБД, проще переносить. Ограничение: медленно на больших базах, требует монопольного доступа при загрузке

Копирование mdf/ldf с Attach

Подходит при переносе всего сервера. Ограничение: требует остановки базы-источника или снятия снапшота, выше риск ошибок

Итог

Что важно запомнить

BAK восстанавливается средствами SQL Server (SSMS или T-SQL), затем база регистрируется в кластере 1С. Проверяйте версию СУБД, пути файлов и права доступа, а в тестовых копиях сразу блокируйте регламентные задания.

Частые вопросы

Можно ли развернуть .bak в файловый вариант 1С?

Напрямую нет. Сначала восстановите базу на SQL Server, зарегистрируйте её в кластере, а затем через конфигуратор выполните выгрузку в .dt и загрузите этот файл в файловую базу. Это штатный и безопасный путь конвертации.

Что делать, если версия SQL Server ниже той, на которой сделана копия?

Восстановление невозможно — механизм backup/restore не работает в сторону понижения версии. Варианты: обновить ваш SQL Server, развернуть копию на другом сервере с подходящей версией или попросить источник выгрузить базу в формате .dt.

Нужно ли останавливать сервер 1С при восстановлении .bak?

Сам сервер 1С останавливать не требуется. Но если вы восстанавливаете копию поверх существующей базы с опцией REPLACE, все сеансы пользователей с этой базой должны быть завершены, иначе SQL Server откажет в восстановлении.

Почему после восстановления 1С не видит базу?

Чаще всего база просто не зарегистрирована в кластере 1С — восстановление в SQL Server не создаёт запись в списке информационных баз автоматически. Также проверьте, что SQL-пользователь, указанный в свойствах базы, существует на сервере и имеет права на восстановленную базу.

Как проверить .bak до восстановления?

Выполните в SSMS команду RESTORE VERIFYONLY FROM DISK с путём к файлу — она проверит читаемость и целостность архива. Командой RESTORE HEADERONLY можно увидеть, с какой версии SQL Server снята копия и когда она была создана, что помогает убедиться, что файл именно тот, который нужен.

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

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