Автоматизация процесса восстановления базы данных из резервной копии — это важная задача для любого системного администратора, отвечающего за сопровождение серверов 1С. Часто возникает необходимость создавать актуальный тестовый контур на основе «боевой» базы. Давайте разберем, как реализовать этот процесс с помощью инструментов SQL Server Agent.
Для автоматизации мы будем использовать SQL Server Agent, создав задание с шагом типа T-SQL. Основная логика заключается в выполнении команды BACKUP (для актуализации текущего состояния) и RESTORE (для перезаписи тестовой базы). Рассмотрим пример базового скрипта:
BACKUP DATABASE [buch30]
TO DISK=N'D:\BACKUP\buch30.bak'
WITH NAME=N'buch30-Full Database Backup',
NOFORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS=100;
RESTORE DATABASE [buch30test]
FROM DISK = N'D:\Backup\buch30.bak'
WITH FILE = 1,
MOVE N'buch30' TO N'D:\Data\Base\buch30test.mdf',
MOVE N'buch30_log' TO N'C:\SQL-Log\Bas-Log\buch30test_1.LDF',
NOUNLOAD, REPLACE, STATS = 100;
Обратите внимание на параметр REPLACE — он критически важен, так как позволяет перезаписать существующую базу данных [buch30test] без предварительного ручного удаления файлов.
При выполнении восстановления в автоматическом режиме вы можете столкнуться с ошибкой, если база данных используется активными соединениями (например, службой 1С или пользователями). Чтобы этого избежать, перед командой RESTORE рекомендуется принудительно перевести базу в монопольный режим:
ALTER DATABASE [buch30test] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- Здесь выполняется команда RESTORE
ALTER DATABASE [buch30test] SET MULTI_USER;
Эти команды разрывают все текущие сеансы, позволяя SQL Server получить эксклюзивный доступ к файлам базы данных.
После восстановления базы данных напрямую на уровне SQL, сервер 1С может сохранять в кэше старые метаданные или номера документов. Для корректной работы тестовой базы рекомендуется выполнить следующие действия:
РегламентныеЗадания сразу после развертывания.COPY_ONLY, чтобы не нарушать последовательность основных резервных копий базы.Никогда не полагайтесь только на автоматику. Чтобы быть уверенными, что ежедневное развертывание проходит успешно, следуйте этим советам:
RESTORE VERIFYONLY. Это позволит проверить целостность файла бэкапа перед тем, как тратить время на его развертывание.Database Mail в SQL Server Agent, чтобы получать оповещения на электронную почту в случае сбоя задания.STANDBY. Он позволяет базе оставаться в режиме «только для чтения» и при этом сохраняет возможность докатки логов транзакций, если это потребуется в течение дня.Применяя данные подходы, вы сможете создать надежный и стабильный процесс автоматического обновления тестового контура, который избавит вас от рутинной работы и обеспечит актуальность данных для разработчиков и аналитиков.