Резервная копия базы 1С в формате .bak: создание, проверка и разворачивание
Содержание
Файл .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
- Подключитесь к серверу SQL в SSMS.
- В дереве
Databasesщёлкните правой кнопкой по базе 1С →Tasks → Back Up.... - Тип копии
Backup type—Full. - В блоке
Destinationудалите путь по умолчанию и добавьте свой, напримерD:\Backup\buh_2026_10_07.bak. - На странице
Backup Optionsвключите сжатие (Compress backup), если редакция SQL Server его поддерживает. - На странице
Media Optionsотметьте проверку копии после создания (Verify backup when finished). - Нажмите
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С:Предприятия.
- Раскройте кластер → правой кнопкой по
Информационные базы→Создать→Информационная база. - Укажите имя базы в кластере, сервер баз данных, тип СУБД
MSSQLServer, имя базыbuh_copy, пользователя и пароль SQL. - Флажок создания базы данных при её отсутствии не ставьте: база уже есть.
- Для копии рабочей базы включите блокировку регламентных заданий — иначе копия начнёт сама загружать банк, отправлять отчёты и обмениваться с другими базами.
- В окне запуска 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С:
Check Database Integrity— проверка целостности.Back Up Database (Full)— полная копия в отдельную папку на каждую базу.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 под тестовым именем. Копия, которую ни разу не восстанавливали, — это надежда, а не резерв.
Ошибки при восстановлении из bak и как их исправить
Сообщения SQL Server приходят на английском. Ниже — самые частые и что с ними делать.