Odin | База знаний 1С

Как автоматизироват...
 

Как автоматизировать создание и удаление архивов баз 1С на MS SQL?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

скрипт автоматического создания архивных копий заданных баз 1с сервера MS SQL и удаления копий через заданный период времени.



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Д, для автоматического создания архивных копий баз 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.



   
ОтветитьЦитата