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

Файлы с расширением .bak являются стандартным форматом резервных копий для СУБД MS SQL Server. Именно в этом формате чаще всего хранятся бэкапы информационных баз 1С:Предприятие, если администрирование ведется на уровне сервера баз данных.

Процесс восстановления (Restore) требует от администратора внимательности и понимания структуры путей к файлам данных. Неправильные действия могут привести к перезаписи актуальных данных устаревшей версией или полной неработоспособности кластера.

Подготовка окружения и проверка целостности архива

Перед началом процедуры восстановления убедитесь, что у вас есть доступ к серверу с установленным SQL Server Management Studio (SSMS). Также необходимо наличие самого файла .bak в доступной файловой системе сервера или сетевого хранилища.

Крайне рекомендуется сначала проверить целостность резервной копии. Это позволит избежать ситуации, когда процесс восстановления дойдет до 99% и прервется из-за битых блоков, оставив базу в подвешенном состоянии.

⚠️ Внимание: Никогда не пытайтесь восстановить базу поверх работающей системы без предварительного создания свежего бэкапа текущей (даже поврежденной) базы. Это единственный шанс вернуть ситуацию к точке "до эксперимента".

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

Выполните следующий запрос в новом окне запроса SSMS, подставив актуальный путь к вашему файлу:

RESTORE HEADERONLY FROM DISK = 'D:\Backups\Accounting_2026.bak'

Если в результате выполнения вы получили таблицу с данными (Position, BackupName, BackupStartDate), значит, файл читаем и готов к работе. Отсутствие ошибок на этом этапе — хороший знак.

💡

Храните резервные копии на отдельном физическом диске или в облачном хранилище, чтобы в случае выхода из строя основного сервера данные остались в сохранности.

Алгоритм восстановления через графический интерфейс SSMS

Самый наглядный способ вернуть базу к жизни — использование графического интерфейса SQL Server Management Studio. Этот метод минимизирует риск опечаток в синтаксисе команд.

Запустите консоль управления и подключитесь к вашему экземпляру сервера. В обозревателе объектов найдите папку Базы данных. Нажмите на нее правой кнопкой мыши и выберите пункт Восстановить базу данных (Restore Database).

  • 📂 В открывшемся окне выберите опцию "Из устройства" (From device) и нажмите кнопку с троеточием для поиска файла.
  • 💾 Добавьте ваш файл .bak в список источников, убедившись, что он отображается в списке.
  • 🏷️ Система автоматически предложит имя базы данных. Вы можете изменить его, если восстанавливаете копию под новым именем для тестов.

Перейдите на вкладку Файлы (Files). Здесь критически важно проверить пути к файлам данных (.mdf) и журналов транзакций (.ldf). По умолчанию SSMS предложит пути, которые были актуальны на момент создания бэкапа.

Если структура дисков на новом сервере отличается, обязательно измените пути в колонке "Восстановить как" (Restore As), чтобы они указывали на существующие директории.

☑️ Проверка перед восстановлением

Выполнено: 0 / 4

Восстановление с помощью T-SQL команд

Для опытных администраторов или для автоматизации процессов через скрипты удобнее использовать язык транзакционных запросов T-SQL. Этот метод дает более гибкий контроль над процессом.

Базовый синтаксис команды RESTORE DATABASE требует указания имени создаваемой базы и пути к файлу резервной копии. Команда выполняется мгновенно после нажатия кнопки выполнения.

RESTORE DATABASE [Accounting_New]

FROM DISK = 'D:\Backups\Accounting_2026.bak'

WITH MOVE 'Accounting' TO 'D:\SQLData\Accounting_New.mdf',

MOVE 'Accounting_log' TO 'L:\SQLLogs\Accounting_New_log.ldf',

RECOVERY, REPLACE, STATS = 10;

Параметр WITH MOVE необходим для перенаправления файлов данных в нужные директории. Имена логических файлов (в первом аргументе MOVE) можно узнать, выполнив предварительно команду RESTORE FILELISTONLY.

Опция REPLACE позволяет перезаписать существующую базу данных с таким же именем. Используйте её с максимальной осторожностью, так как подтверждение второго запроса не потребуется.

⚠️ Внимание: Параметр REPLACE безвозвратно уничтожает текущую базу данных с указанным именем. Убедитесь, что вы не перезаписываете случайно базу с более свежими данными.

Опция STATS = 10 выводит прогресс выполнения операции в процентах каждые 10%, что удобно для отслеживания длительных процессов восстановления больших баз.

Что означают опции восстановления?

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

Решение распространенных ошибок при восстановлении

Даже при соблюдении всех инструкций процесс может завершиться ошибкой. Понимание кодов ошибок SQL Server помогает быстро локализовать проблему.

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

Код ошибки Описание проблемы Способ решения
3201 / 3257 Невозможно открыть устройство резервного копирования Проверить путь к файлу и права доступа службы SQL
5133 Не удалось создать файл (путь недоступен) Создать папку вручную или изменить путь в команде MOVE
3154 База данных уже существует Использовать опцию REPLACE или изменить имя базы
3246 Несовместимость версий сервера Нельзя восстановить бэкап с более новой версии SQL на старую

Ошибка несовместимости версий возникает, если вы пытаетесь развернуть базу, созданную на SQL Server 2019, на сервере с версией 2016. В этом случае поможет только обновление сервера или выгрузка базы средствами самой 1С.

Также следите за размером файла .ldf. Иногда при восстановлении журнал транзакций разрастается до гигантских размеров, если на диске мало места или настроен неверный режим восстановления.

💡

Версия SQL Server, на котором создается бэкап, должна быть равна или ниже версии сервера, на котором выполняется восстановление. Обратная совместимость вниз не работает.

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

После успешного восстановления базы на уровне MS SQL, она еще не видна пользователям в списке баз 1С:Предприятие. Необходимо зарегистрировать её в кластере серверов 1С.

Запустите консоль администрирования серверов 1С. Подключитесь к нужному кластеру, используя права администратора.

В дереве кластера раскройте ветку Информационные базы. Нажмите правой кнопкой мыши и выберите Добавить. В мастере создания укажите имя базы и тип СУБД.

  • 🔑 Укажите имя сервера баз данных и имя восстановленной базы (как оно указано в SQL).
  • 👤 Введите логин и пароль пользователя SQL, имеющего права db_owner на эту базу.
  • 📁 При необходимости укажите каталог для размещения файлов временных таблиц, если используется файловый вариант временных данных.

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

После добавления попробуйте подключиться к базе через тонкий клиент 1С. Если подключение успешно и данные отображаются корректно, процедура завершена.

⚠️ Внимание: Интерфейс и функционал консоли администрирования 1С может отличаться в зависимости от версии платформы (8.2, 8.3, 8.3.20+). Всегда сверяйтесь с официальным руководством администратора для вашей конкретной версии.

📊 Какой способ восстановления вы используете чаще?
Через интерфейс SSMS
С помощью T-SQL скриптов
Через консоль администрирования 1С
Сторонние утилиты

Часто задаваемые вопросы (FAQ)

Можно ли восстановить базу .bak от версии SQL 2019 на SQL 2016?

Нет, это технически невозможно. Механизм хранения данных в новых версиях SQL Server меняется, и старые версии не умеют читать новые форматы страниц данных. Вам потребуется обновить сервер СУБД до версии не ниже той, на которой был сделан бэкап.

Что делать, если при восстановлении ошибка "База данных используется другими пользователями"?

Для принудительного завершения сеансов можно перевести базу в однопользовательский режим перед восстановлением. Используйте команду: ALTER DATABASE [Name] SET SINGLE_USER WITH ROLLBACK IMMEDIATE. После восстановления верните режим: ALTER DATABASE [Name] SET MULTI_USER.

Как узнать логические имена файлов внутри .bak, если я не помню их?

Используйте команду RESTORE FILELISTONLY FROM DISK = 'путь_к_файлу.bak'. Она вернет таблицу, где в колонке LogicalName будут указаны имена, которые нужно использовать в параметрах MOVE команды восстановления.

Восстановление зависло на 99% — это нормально?

Да, это частое явление. Последние проценты часто тратятся на откат незавершенных транзакций (фаза Undo) или построение служебных структур. Не прерывайте процесс насильно, если нет явной ошибки, иначе базу придется восстанавливать заново.