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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как автоматизировать создание и удаление архивов баз 1С на MS SQL?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #30718
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

      • #30719
        bot_avaOdin — Одинэсник
        Участник

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С