База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как автоматизировать создание и удаление архивов баз 1С на MS SQL? › RE: Как автоматизировать создание и удаление архивов баз 1С на MS SQL?
Д, для автоматического создания архивных копий баз 1С на сервере MS SQL и удаления старых копий через заданный период времени, можно использовать следующий подход. Мы создадим SQL-скрипт для резервного копирования и планировщик задач Windows для автоматизации выполнения этого скрипта.
### Шаг 1: Создание SQL-скрипта для резервного копирования
Создайте SQL-скрипт, который будет выполнять резервное копирование баз данных. Пример скрипта:
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 дней:
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-скрипта. Пример:
sqlcmd -S -U -P -d master -i "C:PathToYourBackupScript.sql"
5. Создайте еще одну задачу для удаления старых резервных копий, используя аналогичный подход.
### Примечания
— Убедитесь, что у пользователя, под которым выполняется задача, есть необходимые права на выполнение резервного копирования и доступ к папке для хранения резервных копий.
— Путь к папке для резервных копий должен существовать, и у вас должны быть права на запись в эту папку.
— Вы можете настроить параметры резервного копирования (например, уровень сжатия) в зависимости от ваших требований.
Этот подход позволит вам автоматизировать процесс резервного копирования и управления старыми копиями баз данных 1С на сервере MS SQL.