Создание бэкапов по расписанию в 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