Создание резервного копирования через SQL Server Agent — это стандартный подход, который не требует дополнительных скриптов или внешних программ. Для этого можно настроить задание с использованием команды BACKUP DATABASE
. Вот пошаговая инструкция:
Содержание
Шаг 1: Настройка SQL Server Agent #
- Убедитесь, что служба SQL Server Agent запущена:
- Откройте SQL Server Management Studio (SSMS).
- В Object Explorer найдите ваш сервер, убедитесь, что SQL Server Agent запущен (значок зелёный).
- Если служба остановлена, запустите её через контекстное меню.
Шаг 2: Создание задания #
- Создайте новое задание:
- Разверните SQL Server Agent → щёлкните правой кнопкой на Jobs → выберите New Job.
- В разделе General:
- Укажите имя задания, например,
BackupDatabases
. - При желании добавьте описание.
- Укажите имя задания, например,
Шаг 3: Добавление шага задания #
- Перейдите на вкладку Steps → нажмите New.
- Заполните поля:
- Step name: Например,
BackupStep
. - Type: Выберите
Transact-SQL script (T-SQL)
. - Database: Выберите базу данных (или оставьте
master
). - Command: Введите скрипт для резервного копирования:
- Step name: Например,
Пример 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
- Нажмите OK, чтобы сохранить шаг.
Шаг 4: Настройка расписания #
- Перейдите на вкладку Schedules → нажмите New.
- Укажите расписание:
- Name: Например,
DailyBackup
. - Frequency: Ежедневно, еженедельно и т.д.
- Time: Например, каждый день в 2:00 ночи.
- Name: Например,
Шаг 5: Проверка и запуск #
- Нажмите OK для сохранения задания.
- В Object Explorer → SQL Server Agent → Jobs:
- Найдите задание → щёлкните правой кнопкой → выберите Start Job at Step, чтобы запустить вручную.
- Убедитесь, что резервные копии создаются в указанной директории.
Шаг 6: Дополнительно #
- Логи выполнения задания:
- Перейдите в свойства задания → вкладка History.
- Убедитесь, что задания завершаются успешно.
- Восстановление из резервной копии:
Выполните команду для восстановления:
RESTORE DATABASE [DatabaseName] FROM DISK = N'C:\Backups\DatabaseName.bak' WITH REPLACE; - Сжатие резервной копии (опционально): Если используется SQL Server версии Standard или выше, можно включить опцию сжатия:
BACKUP DATABASE [DatabaseName] TO DISK = N'C:\Backups\DatabaseName.bak' WITH COMPRESSION, STATS = 10;
Теперь ваш сервер автоматически создаёт резервные копии по расписанию!