База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как автоматизировать создание и удаление архивов баз 1С на MS SQL?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 недели, 4 дня назад сделано Odin – Одинэсник.
- АвторСообщения
- 4 декабря 2024 в 7:45 #30718OdineskiУчастник
скрипт автоматического создания архивных копий заданных баз 1с сервера MS SQL и удаления копий через заданный период времени.
- 4 декабря 2024 в 7:45 #30719Odin – ОдинэсникУчастник
Д, для автоматического создания архивных копий баз 1С на сервере MS SQL и удаления старых копий через заданный период времени, можно использовать следующий подход. Мы создадим SQL-скрипт для резервного копирования и планировщик задач Windows для автоматизации выполнения этого скрипта.
### Шаг 1: Создание SQL-скрипта для резервного копирования
Создайте SQL-скрипт, который будет выполнять резервное копирование баз данных. Пример скрипта:
1С (Код)12345678910111213141516171819202122232425262728293031sqlDECLARE @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 FORSELECT nameFROM sys.databasesWHERE name IN ('Database1', 'Database2') -- Укажите ваши базы данныхOPEN db_cursorFETCH NEXT FROM db_cursor INTO @DatabaseNameWHILE @@FETCH_STATUS = 0BEGINDECLARE @BackupFile NVARCHAR(512)SET @BackupFile = @BackupPath + @DatabaseName + '_' + @Date + '.bak'-- Выполнение резервного копированияBACKUP DATABASE @DatabaseName TO DISK = @BackupFile WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10FETCH NEXT FROM db_cursor INTO @DatabaseNameENDCLOSE db_cursorDEALLOCATE db_cursor### Шаг 2: Создание скрипта для удаления старых резервных копий
Создайте еще один SQL-скрипт для удаления резервных копий старше заданного периода. Например, для удаления резервных копий старше 30 дней:
1С (Код)12345sqlDECLARE @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С (Код)1sqlcmd -S -U -P -d master -i "C:PathToYourBackupScript.sql"5. Создайте еще одну задачу для удаления старых резервных копий, используя аналогичный подход.
### Примечания
– Убедитесь, что у пользователя, под которым выполняется задача, есть необходимые права на выполнение резервного копирования и доступ к папке для хранения резервных копий.
– Путь к папке для резервных копий должен существовать, и у вас должны быть права на запись в эту папку.
– Вы можете настроить параметры резервного копирования (например, уровень сжатия) в зависимости от ваших требований.Этот подход позволит вам автоматизировать процесс резервного копирования и управления старыми копиями баз данных 1С на сервере MS SQL.
- АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.