MS SQL Express создание резервных копий по расписанию, создание .bat

MS SQL Express создание резервных копий по расписанию, создание .bat

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

создание скрипта (.sql) можно скачать тут RusAgro.sql :

DECLARE @pathName NVARCHAR(512)  

SET @pathName = 'D:\BACKUPS\RusAgro\RusAgro' + Convert(varchar(8), GETDATE(), 112) + '.bak'

BACKUP DATABASE [RusAgro] TO DISK = @pathName WITH NOFORMAT, NOINIT, NAME = N'db_backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

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

sqlcmd -S SERVER\SQLEXPRESS -U sa -P password.... -i "D:\BACKUPS\Scripts\RusAgro.sql"

Где меняем SERVER – имя сервера, sa – имя пользователя, Password – пароль пользователя, RusAgro.sql – имя сохраненного скрипта. Вторая и третья строка батника архивирует бекап в zip файл и удаляет сам файл бекапа. Для того чтобы работала архивация необходимо установить архиватор 7z и прописать полные пути до исполняемого файла 7z.exe либо положить 7z.exe и 7z.dll в ту же папку, где располагаются скрипты. Теперь можем запустить исполняемый файл backup.bat и проверить проработает ли он так как нужно. Последний шаг это записать schedule в задачи windows. Запускаем Task Scheduler из меню Пуск, либо набираем в командной строке taskschd.msc. В разных версиях Windows это выглядит по разному, да и информацию о том как сделать задачу можно прочитать в помощи Windows. Основное – это запускать задачу от имени пользователя с достаточными правами на используемые папки. При помощи таких действий можно так же запрограммировать и любые другие задачи. В скрипте schedule.sql можно перед бекапом вызвать какие-либо необходимые процедуры, может переиндексирование или сжатие базы данных.

8 Responses

  1. до того момента, как будет выполнено резервное копирование журнала. Запускается этот процесс созданием полной резервной копии — после этого место в журнале не помечается как свободное до тех пор, пока не создана резервная копия журнала. Это довольно сильная ловушка для неопытных администраторов, которые включают эту модель (ну например потому, что именно такая модель восстановления у БД model), не собираясь заниматься резервным копированием журналов вообще. Журналы начинают чрезвычайно пухнуть, и усмирить процесс их роста невозможно.

  2. Это конечно самое наилучшее, что можно было повстречать по указанной тематике. Благодарю

  3. Давным-давно искал такую заметку. Выискал на этом этом сайте. Пребольшое спасибо

  4. В этом месте скоплено самое лучшее из такого, что я смотрел

  5. СУБД перестанет автоматически очищать журнал транзакций. Журнал будет расти до тех пор, пока не будет сделана его резервная копия. Это важный момент, администратору БД необходимо продумать вопрос о плане резервного копирования и очистки журнала. UPD: спасибо за помощь Yggaz

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

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