Создание бэкапов по расписанию в MS SQL Express

MS SQL Express лишен агента, при помощи которого можно выполнять задачи по расписанию, но можно воспользоваться и стандартными средствами Windows.

Очень часто для небольших проектов хватает и Express версии SQL сервера. Одна из проблем –это то, что у Express версии нет SQL Agent службы, при помощи которой можно делать некоторые задачи по расписанию. Взамен можно использовать SQLCMD и стандартный Scheduled Tasks от Windows. Первое, что нужно сделать, это написать скрипт, который создавал бы для нас необходимые бекапы.

Я же использую обычно в таких задачах следующий скрипт:

DECLARE @pathName NVARCHAR(512) 
SET @pathName = 'C:\Backup\dbbackups\db_backup_' + Convert(varchar(8), GETDATE(), 112) + '.bak' 
BACKUP DATABASE [test] TO  DISK = @pathName WITH NOFORMAT, NOINIT,  NAME = N'db_backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

Этот скрипт создает бекап с именем файла db_backup_YYYYDDMM.bak где YYYYDDMM – это текущая дата.  Дата в имени файла позволит нам создавать каждый день бекап в новом файле. Запустите и проверьте что бекап действительно создается такой какой вам и нужен. Этот скрипт сохраняем в какой-нибудь папке под именем  sqlexpressbackups.sql, предположим C:\Backup\. В этой же папке создадим исполняемый файл backup.bat, следующего содержания:

REM Удалить файлы старше 15 дней
ForFiles /p "C:\Backup\dbbackups" /s /d -15 /c "cmd /c del @file"
REM Создание бэкапа БД MSSQL
sqlcmd.exe -S (local)\SQLEXPRESS -i C:\Backup\sqlexpressbackups.sql
  • 5 077 просмотров