Backup SQL с помощью .bat-файла

Время на прочтение: < 1 минуты

Создаем файл backup.bat со следующим содержимым

@chcp 1251
del "D:\Backup\log.txt" // путь до логов
sqlcmd -S SQL\SQLEXPRESS -i D:\Backup\connect.sql -o "D:\Backup\log.txt"
forfiles /p D:\Backup\ /m *.bak /s /d -10 /c "cmd /c del @path /q" // срок хранения 10 дней
del "D:\<имя базы>.bak" // удаление предыдущих копий
echo Y| rd %SystemDrive%\RECYcl- e.bin // очистка корзины
exit

Создаем файл connect.sql со следующим содержимым

BACKUP DATABASE [<имя базы>] TO  DISK = N'D:\<имя базы>.bak' WITH NOFORMAT, NOINIT,  NAME = N'<имя базы>-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
--path - переменная, в которой хранится путь к файлу бэкапа
--ШАГ 1 - Создание бэкапа в указанном каталоге
declare @path varchar(max)=N'D:\Backup\DEK_backup_'+convert(varchar(max),getdate(),112) + N'.bak'
BACKUP DATABASE [<имя базы>] TO  DISK = @path WITH NOFORMAT, NOINIT,  NAME = N'<имя базы>-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
--ШАГ 2 - Проверка резервной копии
declare @backupSetId as int
declare @path varchar(max)=N'D:\Backup\DEK_backup_'+convert(varchar(max),getdate(),112) + N'.bak'
select @backupSetId = position from msdb..backupset where database_name=N'<имя базы>' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'<имя базы>' )
if @backupSetId is null begin raiserror(N'Ошибка верификации. Сведения о резервном копировании для базы данных "<имя базы>" не найдены.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = @path WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO

Добавляем в планировщик сам bat-файл

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x