Резервное копирование через SQL Server Agent

Создание резервного копирования через SQL Server Agent — это стандартный подход, который не требует дополнительных скриптов или внешних программ. Для этого можно настроить задание с использованием команды BACKUP DATABASE. Вот пошаговая инструкция:


Шаг 1: Настройка SQL Server Agent #

  1. Убедитесь, что служба SQL Server Agent запущена:
    • Откройте SQL Server Management Studio (SSMS).
    • В Object Explorer найдите ваш сервер, убедитесь, что SQL Server Agent запущен (значок зелёный).
    • Если служба остановлена, запустите её через контекстное меню.

Шаг 2: Создание задания #

  1. Создайте новое задание:
    • Разверните SQL Server Agent → щёлкните правой кнопкой на Jobs → выберите New Job.
  2. В разделе General:
    • Укажите имя задания, например, BackupDatabases.
    • При желании добавьте описание.

Шаг 3: Добавление шага задания #

  1. Перейдите на вкладку Steps → нажмите New.
  2. Заполните поля:
    • Step name: Например, BackupStep.
    • Type: Выберите Transact-SQL script (T-SQL).
    • Database: Выберите базу данных (или оставьте master).
    • Command: Введите скрипт для резервного копирования:

Пример 1. Полное резервное копирование конкретной базы: #

BACKUP DATABASE [DatabaseName]
TO DISK = N'C:\Backups\DatabaseName.bak'
WITH NOFORMAT, INIT, NAME = N'DatabaseName-Full Backup', 
SKIP, NOREWIND, NOUNLOAD, STATS = 10;

Пример 2. Резервное копирование всех пользовательских баз: #

DECLARE @name NVARCHAR(256)
DECLARE @path NVARCHAR(256)
DECLARE @command NVARCHAR(MAX)
-- Директория для бэкапов
SET @path = N'C:\Backups\'
DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb') -- Исключение служебных баз
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @command = 'BACKUP DATABASE [' + @name + '] TO DISK = ''' + @path + @name + '-' + CONVERT(VARCHAR(10), GETDATE(), 120) + '.bak'''
    EXEC(@command)
    FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
  1. Нажмите OK, чтобы сохранить шаг.

Шаг 4: Настройка расписания #

  1. Перейдите на вкладку Schedules → нажмите New.
  2. Укажите расписание:
    • Name: Например, DailyBackup.
    • Frequency: Ежедневно, еженедельно и т.д.
    • Time: Например, каждый день в 2:00 ночи.

Шаг 5: Проверка и запуск #

  1. Нажмите OK для сохранения задания.
  2. В Object Explorer → SQL Server Agent → Jobs:
    • Найдите задание → щёлкните правой кнопкой → выберите Start Job at Step, чтобы запустить вручную.
  3. Убедитесь, что резервные копии создаются в указанной директории.

Шаг 6: Дополнительно #

  1. Логи выполнения задания:
    • Перейдите в свойства задания → вкладка History.
    • Убедитесь, что задания завершаются успешно.
  2. Восстановление из резервной копии:
    Выполните команду для восстановления:
    RESTORE DATABASE [DatabaseName] FROM DISK = N'C:\Backups\DatabaseName.bak' WITH REPLACE;
  3. Сжатие резервной копии (опционально): Если используется SQL Server версии Standard или выше, можно включить опцию сжатия:
    BACKUP DATABASE [DatabaseName] TO DISK = N'C:\Backups\DatabaseName.bak' WITH COMPRESSION, STATS = 10;

Теперь ваш сервер автоматически создаёт резервные копии по расписанию!

Оцените документ
Обновлено 03.02.2025

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *