База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как автоматизировать создание и удаление архивов баз 1С на MS SQL? › RE: Как автоматизировать создание и удаление архивов баз 1С на MS SQL?
Д, для автоматического создания архивных копий баз 1С на сервере MS SQL и удаления старых копий через заданный период времени, можно использовать следующий подход. Мы создадим SQL-скрипт для резервного копирования и планировщик задач Windows для автоматизации выполнения этого скрипта.
### Шаг 1: Создание SQL-скрипта для резервного копирования
Создайте SQL-скрипт, который будет выполнять резервное копирование баз данных. Пример скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | sql DECLARE @DatabaseName NVARCHAR(256) DECLARE @BackupPath NVARCHAR(512) DECLARE @Date NVARCHAR(20) -- Укажите путь для сохранения резервных копий SET @BackupPath = 'D:Backup' SET @Date = CONVERT(NVARCHAR(20), GETDATE(), 112) -- Формат YYYYMMDD -- Список баз данных для резервного копирования DECLARE db_cursor CURSOR FOR SELECT name FROM sys.databases WHERE name IN ('Database1', 'Database2') -- Укажите ваши базы данных OPEN db_cursor FETCH NEXT FROM db_cursor INTO @DatabaseName WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @BackupFile NVARCHAR(512) SET @BackupFile = @BackupPath + @DatabaseName + '_' + @Date + '.bak' -- Выполнение резервного копирования BACKUP DATABASE @DatabaseName TO DISK = @BackupFile WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10 FETCH NEXT FROM db_cursor INTO @DatabaseName END CLOSE db_cursor DEALLOCATE db_cursor |
### Шаг 2: Создание скрипта для удаления старых резервных копий
Создайте еще один SQL-скрипт для удаления резервных копий старше заданного периода. Например, для удаления резервных копий старше 30 дней:
1 2 3 4 5 | sql DECLARE @BackupPath NVARCHAR(512) SET @BackupPath = 'D:Backup' EXEC xp_cmdshell 'forfiles /p "' + @BackupPath + '" /s /m *.bak /d -30 /c "cmd /c del @path"' |
### Шаг 3: Настройка планировщика задач Windows
1. Откройте “Планировщик задач” (Task Scheduler).
2. Создайте новую задачу.
3. Установите триггер для выполнения задачи, например, ежедневно в 2:00.
4. В качестве действия выберите “Запустить программу” и укажите sqlcmd.exe
с параметрами для выполнения вашего SQL-скрипта. Пример:
1 | sqlcmd -S -U -P -d master -i "C:PathToYourBackupScript.sql" |
5. Создайте еще одну задачу для удаления старых резервных копий, используя аналогичный подход.
### Примечания
– Убедитесь, что у пользователя, под которым выполняется задача, есть необходимые права на выполнение резервного копирования и доступ к папке для хранения резервных копий.
– Путь к папке для резервных копий должен существовать, и у вас должны быть права на запись в эту папку.
– Вы можете настроить параметры резервного копирования (например, уровень сжатия) в зависимости от ваших требований.
Этот подход позволит вам автоматизировать процесс резервного копирования и управления старыми копиями баз данных 1С на сервере MS SQL.