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

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

Как развернуть бэкап 1С из файла .bak

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

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

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

Ниже разобран полный цикл: от проверки исходного файла до подключения базы к 1С и контроля результата. Инструкции подходят для связки 1С:Предприятие 8.3 и Microsoft SQL Server со стандартной схемой развёртывания.

Что такое файл .bak и чем он отличается от выгрузки .dt

В экосистеме 1С существуют два принципиально разных формата резервных копий. Файл .dt создаётся через конфигуратор (Администрирование → Выгрузить информационную базу) и содержит данные в универсальном формате платформы — его можно загрузить и в файловый, и в клиент-серверный вариант. Файл .bak — это нативная копия SQL Server, созданная командой BACKUP DATABASE или планом обслуживания.

Ключевое отличие — привязка к СУБД. Бэкап .bak можно восстановить только на SQL Server, причём версия целевого сервера должна быть не ниже версии, на которой копия создавалась. Обратная миграция (с новой версии на старую) невозможна штатными средствами. Зато восстановление из .bak происходит значительно быстрее загрузки .dt и сохраняет базу «как есть» на момент копирования.

Сравнение вариантов

Файл .bak (SQL Server)

Быстрое восстановление больших баз, точная копия на момент бэкапа. Требуется SQL Server той же или более новой версии и права на СУБД.

Файл .dt (конфигуратор)

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

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

Прежде чем запускать восстановление, убедитесь, что у вас есть всё необходимое. Потребуется: доступ к серверу СУБД с правами sysadmin или dbcreator, достаточный объём свободного места на дисках под файлы данных и журнал транзакций, а также сам файл .bak, доступный с сервера SQL (учётная запись службы SQL Server должна иметь к нему доступ на чтение).

Полезно заранее выяснить, из какой среды взята копия. Если бэкап сделан на SQL Server 2019, а у вас развёрнут SQL Server 2016, восстановление завершится ошибкой несовместимости версий. Версию исходного сервера можно узнать, прочитав заголовок файла командой RESTORE HEADERONLY.

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

В выводе этой команды смотрите поля SoftwareVersionMajor/SoftwareVersionMinor (версия SQL Server), DatabaseName (исходное имя базы) и DatabaseBackupSize (примерный размер данных). Это поможет спланировать размещение файлов и убедиться, что бэкап вообще читается.

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

Самый наглядный способ — графический интерфейс SQL Server Management Studio (SSMS). Подключитесь к серверу СУБД, откройте контекстное меню узла «Базы данных» и выберите «Восстановить базу данных». В качестве источника укажите «Устройство» и добавьте файл .bak.

В поле «Назначение» задайте имя новой базы — для тестовой копии используйте отличное от рабочей имя, например base1c_test. На вкладке «Файлы» проверьте пути размещения файлов данных (.mdf) и журнала (.ldf): по умолчанию SSMS предложит каталоги исходного сервера, которых может не существовать на вашем. На вкладке «Параметры» для восстановления поверх существующей базы отметьте «Перезаписать существующую базу данных (WITH REPLACE)» — для новой базы эта опция не нужна.

Порядок действий в SSMS
  1. 1
    Подключитесь к SQL Server под учётной записью с правами администратора СУБД
  2. 2
    Откройте «Базы данных» → «Восстановить базу данных», выберите источник «Устройство» и укажите файл .bak
  3. 3
    Задайте имя целевой базы и проверьте пути к файлам на вкладке «Файлы»
  4. 4
    Запустите восстановление и дождитесь сообщения об успешном завершении
  5. 5
    Проверьте, что база появилась в списке и находится в состоянии Online

Восстановление через T-SQL

Для автоматизации или работы без графического интерфейса используется команда RESTORE DATABASE. Сначала полезно посмотреть логические имена файлов внутри бэкапа — они понадобятся для перенаправления файлов в нужные каталоги.

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

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

sql
RESTORE DATABASE [base1c_test] FROM DISK = N'D:\Backups\base1c.bak' WITH MOVE N'base1c_Data' TO N'D:\SQLData\base1c_test.mdf', MOVE N'base1c_Log' TO N'D:\SQLData\base1c_test.ldf', REPLACE, STATS = 10;

Логические имена (первый аргумент MOVE) возьмите из вывода FILELISTONLY — в базах 1С они часто отличаются от показанных в примере. Параметр STATS = 10 выводит прогресс восстановления каждые 10 процентов, что удобно для больших баз.

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

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

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

Если сервер 1С и SQL Server работают на разных машинах, учётная запись агента сервера 1С (обычно USR1CV8) должна иметь права на базу в SQL Server. Проще всего при создании ИБ указать SQL-аутентификацию с существующим логином, либо заранее выдать учётной записи агента роль db_owner на восстановленную базу.

Что сделать после восстановления копии

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

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

Типичные ошибки
01
Восстановление поверх рабочей базы без свежего бэкапа — данные теряются безвозвратно при любом сбое процесса
02
Забытая блокировка регламентных заданий в тестовой копии — дублирование обменов, рассылок и проведения документов по расписанию
03
Оставленные пути к файлам с исходного сервера — ошибка восстановления из-за отсутствия каталогов или конфликт файлов с существующей базой
04
Использование .bak с более новой версии SQL Server — ошибка несовместимости, которая не решается никакими настройками
05
Отсутствие прав у учётной записи агента 1С на базу — база видна в консоли, но пользователи не могут войти

Проверка результата и контрольные точки

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

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

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

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

Статус Online, база открывается, таблицы читаются

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

Статус Restoring или Suspect — восстановление не завершено или файлы повреждены

Вход в 1С
Норма

База открывается без ошибок соединения, данные на месте

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

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

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

В свойствах ИБ стоит блокировка, задания не выполняются

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

Задания активны и дублируют операции рабочей базы

Свободное место на дисках
Норма

После восстановления остаётся запас под рост базы и журнала

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

Диск заполнен почти полностью — риск остановки работы SQL Server

Если база восстанавливалась после сбоя и будет использоваться как рабочая, рекомендуется выполнить проверку целостности средствами SQL Server (DBCC CHECKDB) и тестирование и исправление в конфигураторе 1С. Это займёт время, но позволит выявить повреждения до того, как с базой начнут работать пользователи.

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

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

Нужна тестовая копия для обкатки обновленияВосстановите .bak под новым именем, включите блокировку регламентных заданий и очистите настройки обменов
Рабочая база потеряна после сбояВосстановите последний .bak (при наличии — с разностными копиями и журналами), проверьте целостность и подключите базу под прежним именем
База переезжает на новый серверПеренесите .bak, восстановите с корректными путями MOVE, пересоздайте запись в консоли кластера и проверьте права учётных записей
Версия SQL Server ниже той, где снят бэкапОбновите целевой SQL Server или запросите выгрузку .dt — восстановить .bak на старую версию невозможно

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

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

Нет. Конфигуратор работает только с выгрузками .dt. Файл .bak — это формат SQL Server, и восстанавливается он исключительно средствами СУБД: через Management Studio или командой RESTORE DATABASE. После восстановления база подключается к 1С через консоль кластера.

Почему возникает ошибка «база данных создана в более новой версии SQL Server»?

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

Ошибка доступа к файлу .bak при восстановлении — в чём причина?

Файл читает не ваш пользователь, а учётная запись службы SQL Server. Проверьте, что у неё есть права на чтение каталога с бэкапом. При восстановлении с сетевого ресурса используйте UNC-путь и убедитесь, что учётная запись службы имеет к нему доступ.

Можно ли восстановить копию параллельно с рабочей базой на одном сервере?

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

Чем .bak лучше .dt для больших баз?

Восстановление из .bak идёт на уровне файлов СУБД и обычно занимает минуты или десятки минут даже для крупных баз, тогда как загрузка .dt через конфигуратор на таких объёмах может длиться часы. Кроме того, .bak сохраняет точное состояние базы на момент копирования, включая индексы и настройки СУБД.

Нужно ли что-то настраивать в SQL Server после восстановления базы 1С?

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

Итог

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

Файл .bak восстанавливается средствами SQL Server (SSMS или RESTORE DATABASE с MOVE и REPLACE), затем база регистрируется в консоли кластера 1С без создания новой БД. Для тестовой копии обязательно блокируйте регламентные задания, а перед восстановлением поверх рабочей базы делайте свежий бэкап. Версия целевого SQL Server должна быть не ниже версии источника.