SQL
Как восстановить базу 1С 8.3 из резервной копии SQL BAK
База 1С 8.3 в клиент-серверном варианте может храниться в SQL Server. Если у вас есть файл резервной копии .bak, восстанавливать его нужно средствами SQL Server, чаще всего через SQL Server Management Studio или T-SQL
Самая безопасная логика такая: сначала восстановить базу в тестовое имя, проверить запуск 1С, и только потом принимать решение о замене рабочей базы
Что нужно перед восстановлением
Перед restore проверьте:
- файл
.bakдействительно относится к нужной базе - есть актуальная копия текущей рабочей базы
- пользователи 1С завершили работу
- есть доступ администратора SQL Server
- известно имя SQL-сервера и имя базы
- понятно, куда будут восстановлены файлы MDF и LDF
- версия платформы 1С подходит для запуска восстановленной базы
Не восстанавливайте бэкап поверх рабочей базы, если не уверены в источнике файла. Ошибка в выборе .bak может стереть актуальные данные
Как посмотреть содержимое BAK
Перед восстановлением полезно посмотреть логические имена файлов:
RESTORE FILELISTONLY
FROM DISK = 'D:\Backups\base1c.bak';
В результате вы увидите логические имена data-файла и log-файла. Они понадобятся, если база восстанавливается в новое имя или в другую папку
Восстановление в новую базу через T-SQL
Пример восстановления в новую базу:
USE master;
GO
RESTORE DATABASE base1c_test
FROM DISK = 'D:\Backups\base1c.bak'
WITH
MOVE 'base1c' TO 'D:\SQLData\base1c_test.mdf',
MOVE 'base1c_log' TO 'D:\SQLLogs\base1c_test.ldf',
RECOVERY;
GO
Логические имена base1c и base1c_log нужно заменить на те, которые вернул RESTORE FILELISTONLY
Если путь к файлам указан неверно, SQL Server не сможет восстановить базу
Восстановление через SSMS
В SSMS порядок такой:
- подключитесь к SQL Server
- откройте
Databases - выберите
Restore Database - в источнике выберите
Device - укажите файл
.bak - задайте имя новой базы
- проверьте вкладку
Files - убедитесь, что MDF и LDF попадают в правильные папки
- запустите восстановление
Если восстанавливаете поверх существующей базы, обязательно проверьте опцию замены и убедитесь, что пользователи отключены
Как подключить восстановленную базу к 1С
После восстановления базы в SQL Server нужно добавить или изменить информационную базу в кластере 1С
В форме подключения укажите:
- сервер 1С
- имя кластера, если используется
- SQL Server
- имя восстановленной базы
- пользователя SQL Server или Windows-аутентификацию
После подключения откройте базу в режиме 1С:Предприятие или Конфигуратор и проверьте, что данные отображаются корректно
Что делать, если база уже существует
Если вы восстанавливаете поверх существующей базы, сначала переведите пользователей и приложения в режим простоя. Затем можно использовать:
USE master;
GO
ALTER DATABASE base1c
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
RESTORE DATABASE base1c
FROM DISK = 'D:\Backups\base1c.bak'
WITH REPLACE, RECOVERY;
GO
ALTER DATABASE base1c
SET MULTI_USER;
GO
Этот способ жестко отключает активные подключения. Для рабочей базы его используют только после предупреждения пользователей и проверки резервной копии
Мини-практика
На тестовом сервере восстановите .bak не в старое имя, а в имя с суффиксом _test. Затем подключите эту базу в 1С как отдельную информационную базу и проверьте запуск
Так вы потренируетесь без риска для рабочих данных
Частые ошибки
- Восстановить бэкап поверх рабочей базы без отдельной копии текущего состояния
- Не проверить логические имена файлов через
RESTORE FILELISTONLY - Оставить базу в
SINGLE_USER - Забыть изменить пути MDF и LDF при восстановлении на другой сервер
- Подключить 1С к старой базе, думая, что она уже смотрит на восстановленную
- Восстанавливать базу без учета версии платформы 1С
Что почитать дальше по SQL
Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:
- CSV в SQL: как загрузить файл в базу данных
- Как базу данных Access сделать SQL: перенос в SQL Server без иллюзий
- Как настроить SQL Server для 1С 8.3: база, доступ и проверка
- Как отключить базу MS SQL: OFFLINE, detach и остановка доступа