Резервная копия базы 1С в формате .bak: создание, проверка и разворачивание

· 10 мин

Содержание

Файл .bak у 1С — это резервная копия базы данных Microsoft SQL Server, на которой работает клиент-серверная информационная база. Сама платформа 1С такие файлы не создаёт: их делает SQL Server командой BACKUP DATABASE, а восстанавливают базу из .bak командой RESTORE DATABASE или через мастер в SQL Server Management Studio (SSMS).

Назначение .bak — быстрая и полная копия базы на уровне СУБД: со всеми данными, конфигурацией, пользователями 1С и хранилищем файлов внутри базы. После восстановления базу остаётся зарегистрировать в кластере серверов 1С, и с ней можно работать.

Что лежит внутри файла .bak и откуда он берётся

Клиент-серверная база 1С — это обычная база данных SQL Server. В её таблицах хранится всё: справочники, документы, регистры, сама конфигурация (таблицы Config и ConfigSave), список пользователей, присоединённые файлы, если они хранятся в базе.

Файл .bak — снимок страниц этой базы на момент копирования. В нём нет ничего «от 1С»: SQL Server не знает, что внутри бухгалтерия.

Откуда .bak обычно появляется у пользователя 1С:

  • 🗄️ задание плана обслуживания SQL Server, которое каждую ночь кладёт копии в папку вроде D:\Backup;
  • 🧑‍💻 администратор сделал копию вручную перед обновлением конфигурации;
  • 📦 программист или обслуживающая организация прислали копию базы для разбора ошибки;
  • ☁️ хостинг 1С выгрузил вашу базу по запросу.

Расширение .bak ничего не гарантирует: так называют любую «запасную» копию. Если файл пришёл со стороны, сначала проверьте, что это именно копия SQL Server, — команды для этого ниже, в разделе про восстановление.

У файловой базы (один файл 1Cv8.1CD) файлов .bak нет. Её копируют выгрузкой .dt, копией самого 1Cv8.1CD при закрытой базе или встроенной обработкой — об этом отдельный раздел.

Bak и dt: в чём разница между двумя видами копий 1С

Выгрузка .dt делается в конфигураторе: Администрирование → Выгрузить информационную базу. Это логическая копия: платформа сама читает данные и упаковывает их в свой формат. Bak — физическая копия на уровне СУБД.

Признак.bak (SQL Server).dt (выгрузка 1С)
Кто создаётSQL ServerКонфигуратор 1С
Скорость на базе 50–100 ГБминуты, особенно со сжатиемчасы
Куда можно развернутьтолько в SQL Server той же или более новой версиив любую базу 1С: файловую, MS SQL, PostgreSQL
Нужен ли 1С для созданиянетда, конфигуратор и права администратора
Копия «на момент времени»да, при полной модели восстановления и копиях журналанет
Монопольный доступ при восстановлениибаза SQL не должна использоватьсяда, загрузка .dt требует монопольного режима
Подходит для переноса между СУБДнетда

Короткий вывод: .bak — для ежедневного резервного копирования клиент-серверной базы на MS SQL и быстрого отката. .dt — для переноса базы между СУБД, в файловый режим, другому специалисту или на другой сервер с иной СУБД.

Переименовать .bak в .dt и загрузить через конфигуратор нельзя — форматы совершенно разные, загрузка закончится ошибкой.

Как сделать резервную копию базы 1С в формате bak

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

Через SQL Server Management Studio

  1. Подключитесь к серверу SQL в SSMS.
  2. В дереве Databases щёлкните правой кнопкой по базе 1С → Tasks → Back Up....
  3. Тип копии Backup type — Full.
  4. В блоке Destination удалите путь по умолчанию и добавьте свой, например D:\Backup\buh_2026_10_07.bak.
  5. На странице Backup Options включите сжатие (Compress backup), если редакция SQL Server его поддерживает.
  6. На странице Media Options отметьте проверку копии после создания (Verify backup when finished).
  7. Нажмите OK и дождитесь сообщения об успешном завершении.

Командой T-SQL

То же самое одной командой — удобно сохранить её и запускать перед каждым обновлением:

BACKUP DATABASE [buh]
TO DISK = N'D:\Backup\buh_full.bak'
WITH COMPRESSION, CHECKSUM, INIT, STATS = 10;
  • COMPRESSION — сжатие, файл обычно в 3–6 раз меньше базы. В редакции Express недоступно — уберите параметр.
  • CHECKSUM — контрольные суммы страниц, повреждения будут видны сразу.
  • INIT — перезаписать файл, а не дописывать новую копию в конец старого.

Разовая копия, которая не ломает график

Если ночные копии уже настроены с разностными (DIFFERENTIAL) копиями, ручная полная копия сбивает их цепочку. Для разовой копии перед обновлением добавьте COPY_ONLY:

BACKUP DATABASE [buh]
TO DISK = N'D:\Backup\buh_before_update.bak'
WITH COPY_ONLY, COMPRESSION, CHECKSUM, INIT;

Восстановление базы 1С из bak-файла пошагово

Восстановление поверх рабочей базы стирает все данные, внесённые после создания копии, и обрывает сеансы пользователей. Если цель — достать документы или проверить копию, разворачивайте её под новым именем, например buh_copy.

Шаг 1. Проверьте, что внутри файла

RESTORE HEADERONLY FROM DISK = N'D:\Backup\buh_full.bak';
RESTORE FILELISTONLY FROM DISK = N'D:\Backup\buh_full.bak';
RESTORE VERIFYONLY FROM DISK = N'D:\Backup\buh_full.bak' WITH CHECKSUM;
  • HEADERONLY показывает имя исходной базы, дату копии и версию SQL Server, на которой она сделана.
  • FILELISTONLY выдаёт логические имена файлов данных и журнала — они нужны для MOVE.
  • VERIFYONLY проверяет, что файл читается целиком. Полную гарантию даёт только пробное восстановление.

Шаг 2. Восстановите базу в SQL Server

Через SSMS: правой кнопкой по Databases → Restore Database... → источник Device → выберите файл .bak. Впишите имя новой базы в поле Database. На странице Files отметьте перенос файлов в папку данных (Relocate all files to folder), на странице Options — нужные параметры.

Через T-SQL, с логическими именами из FILELISTONLY:

RESTORE DATABASE [buh_copy]
FROM DISK = N'D:\Backup\buh_full.bak'
WITH MOVE N'buh'     TO N'D:\SQLData\buh_copy.mdf',
     MOVE N'buh_log' TO N'D:\SQLData\buh_copy_log.ldf',
     RECOVERY, STATS = 10;

Для замены существующей базы добавляют REPLACE, а перед этим отключают пользователей. Сеансы 1С оборвутся, несохранённые документы пропадут — делайте это вне рабочего времени и после предупреждения сотрудников:

ALTER DATABASE [buh] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE [buh] FROM DISK = N'D:\Backup\buh_full.bak' WITH REPLACE, RECOVERY;
ALTER DATABASE [buh] SET MULTI_USER;

Шаг 3. Зарегистрируйте базу в кластере 1С

Восстановленная база SQL ещё не видна 1С. Если вы восстанавливали поверх существующей базы, этот шаг не нужен — регистрация в кластере осталась прежней.

  1. Откройте консоль администрирования серверов 1С:Предприятия.
  2. Раскройте кластер → правой кнопкой по Информационные базы → Создать → Информационная база.
  3. Укажите имя базы в кластере, сервер баз данных, тип СУБД MSSQLServer, имя базы buh_copy, пользователя и пароль SQL.
  4. Флажок создания базы данных при её отсутствии не ставьте: база уже есть.
  5. Для копии рабочей базы включите блокировку регламентных заданий — иначе копия начнёт сама загружать банк, отправлять отчёты и обмениваться с другими базами.
  6. В окне запуска 1С нажмите Добавить → добавление существующей базы → на сервере 1С:Предприятия, укажите сервер кластера и имя базы.

Шаг 4. Что проверить после запуска

  • 🔑 Под администратором 1С войдите в базу, откройте пару свежих документов и сверьте дату последних записей с датой копии.
  • 🧭 Типовые конфигурации на БСП при первом входе в перенесённую копию спрашивают, перемещена ли база или это копия. Для тестовой копии выберите вариант «это копия»: тогда отключатся обмены и отправка данных во внешние сервисы.
  • 📤 Если копия нужна для экспериментов, сразу смените в ней заголовок программы, чтобы не перепутать окна.

Если база на PostgreSQL или в файловом режиме

На PostgreSQL аналог .bak — дамп pg_dump. Расширение файла может быть любым (.backup, .dump, а иногда и .bak), поэтому смотрят на содержимое: pg_restore -l имя_файла выводит список объектов, если это дамп в формате custom.

pg_dump -U postgres -Fc -f /backup/buh.backup buh
createdb -U postgres -T template0 buh_copy
pg_restore -U postgres -d buh_copy /backup/buh.backup

Дальше база регистрируется в кластере 1С так же, как в шаге 3, только тип СУБД — PostgreSQL. Восстановить .bak от MS SQL в PostgreSQL нельзя: для переноса между СУБД делают выгрузку .dt.

Для файловой базы есть три способа копирования:

СпособКогда подходитРиски
Копия файла 1Cv8.1CDвсе пользователи вышли из базыкопия при открытой базе может оказаться повреждённой
Выгрузка .dt в конфигуратореперед обновлением, для передачи базына больших базах долго
Встроенное копирование Администрирование → Обслуживание → Резервное копирование и восстановлениерегулярные копии без админаработает только в файловом режиме

Автоматическое резервное копирование в bak: планы обслуживания и планировщик

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

Полный SQL Server: план обслуживания

В SSMS: Management → Maintenance Plans → Maintenance Plan Wizard. Планы выполняет служба SQL Server Agent, она должна быть запущена. Типовой ночной план для базы 1С:

  1. Check Database Integrity — проверка целостности.
  2. Back Up Database (Full) — полная копия в отдельную папку на каждую базу.
  3. Maintenance Cleanup Task — удаление файлов .bak старше 14 дней.

Модель восстановления выбирают осознанно. При Simple достаточно полных и разностных копий. При Full нужно ещё копировать журнал (BACKUP LOG ... TO DISK = '...trn') каждые 15–60 минут — иначе файл журнала .ldf растёт до размеров диска.

SQL Server Express: bat-файл и планировщик Windows

В Express нет SQL Server Agent. Копию делает sqlcmd, запуск — через планировщик заданий Windows:

@echo off
sqlcmd -S .\SQLEXPRESS -E -Q "BACKUP DATABASE [buh] TO DISK = N'D:\Backup\buh_full.bak' WITH INIT, CHECKSUM"
forfiles /p "D:\Backup" /m *.bak /d -14 /c "cmd /c del @path"

Учётная запись задания должна иметь права в SQL Server (-E — вход под Windows-пользователем), а служба SQL Server — право записи в папку D:\Backup.

Где хранить копии

  • 💾 Не только на том же диске, где база: при отказе диска вы потеряете и базу, и копии.
  • 🌐 Хотя бы одна копия — на другом сервере, сетевом хранилище или в облаке.
  • 🧪 Раз в месяц разворачивайте свежий .bak под тестовым именем. Копия, которую ни разу не восстанавливали, — это надежда, а не резерв.
Резервное копирование базы 1С на MS SQL настроено, если
Выполнено: 0 / 5

Ошибки при восстановлении из bak и как их исправить

Сообщения SQL Server приходят на английском. Ниже — самые частые и что с ними делать.

Диагностика: выберите симптом

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

Можно ли открыть файл .bak без SQL Server?
Нет. Это внутренний формат SQL Server, его читает только сам сервер. Для разовой проверки подойдёт бесплатная редакция Developer или Express, если размер базы укладывается в её ограничения.
Сколько места занимает копия базы 1С?
Без сжатия — примерно как занятое место в файле данных .mdf. Со сжатием обычно в 3–6 раз меньше: база 60 ГБ даёт файл порядка 10–20 ГБ.
Нужна ли лицензия 1С, чтобы сделать или развернуть .bak?
Для работы с самим файлом — нет, это операции SQL Server. Лицензия нужна, когда пользователи начнут работать в восстановленной базе через 1С.
Можно ли достать из .bak один документ, а не всю базу?
Напрямую нет. Разверните копию под другим именем, подключите к кластеру и перенесите нужные документы обработкой или выгрузкой в XML. Рабочую базу при этом не трогайте.
Как часто делать копии базы 1С?
Для бухгалтерии малой фирмы обычно хватает ежедневной полной копии. Если потеря даже часа работы критична — полная модель восстановления и копии журнала каждые 15–30 минут.