Для автоматизации резервного копирования нужно написать sql скрипт. За основу можно взять скрипт, который выполняется при выполнении стандартной задачи — Создать резервную копию
Для этого нужно в SQL Management Studio кликнуть правой кнопкой по той базе данных, для которой нужно настроить резервное копирование. В контекстном меню перейти в Задачи — Создать резервную копию:
В открывшемся диалоговом окне нужно убедиться, что тип резервной копии стоит «Полная» (Full), при необходимости можно задать имя и описание, а также указать назначение резервной копии. По умолчанию выбран путь на жестком диске компьютера в папку Backup основного расположения баз SQL-сервера. Для того чтобы изменить место размещения копии, сначала надо нажать «Удалить» (Remove), чтобы удалить существующее назначение, а затем «Добавить» (Add…) для добавления нового.
Далее нужно на вкладке «Параметры» (Options), можно указать, что резервную копию необходимо проверить после выполнения, а также задать другие параметры надежности. Рекомендуется установить флаг «Проверить резервную копию после завершения»:
После этого нажимаем на кнопку Скрипт в верхней части формы и в результате откроется скрипт по созданию резервной копии с учетом произведенных на форме настроек:
Ниже приведен скрипт с учетом небольших корректировок: в имени файла добавляется дата создания бэкапа:
--path - переменная, в которой хранится путь к файлу бэкапа
--ШАГ 1 - Создание бэкапа в указанном каталоге
declare @path varchar(max)=N'F:\Backup\DATABASE_NAME_backup_'+convert(varchar(max),getdate(),112) + N'.bak'
BACKUP DATABASE [erp_base] TO DISK = @path WITH NOFORMAT, NOINIT, NAME = N'erp_base-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
--ШАГ 2 - Проверка резервной копии
declare @backupSetId as int
declare @path varchar(max)=N'F:\Backup\DATABASE_NAME_backup_'+convert(varchar(max),getdate(),112) + N'.bak'
select @backupSetId = position from msdb..backupset where database_name=N'erp_base' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'erp_base' )
if @backupSetId is null begin raiserror(N'Ошибка верификации. Сведения о резервном копировании для базы данных "erp_base" не найдены.', 16, 1) end
RESTORE VERIFYONLY FROM DISK = @path WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
GO
Вместо DATABASE_NAME нужно указать имя вашей базы данных, а также указать свой путь к каталогу с файлами бэкапов.
Полученный скрипт нужно сохранить в файл sql с помощью команды Файл — Сохранить как:
В открывшемся диалоге нужно выбрать папку, в которую нужно сохранить скрипт:
Далее с помощью обычного блокнота нужно создать файл cmd следующего содержания:
del «F:\Backup\log.txt»
sqlcmd -S SERVER-2008R2\SQLEXPRESS -i F:\Backup\backup_script_erp_base.sql -o «F:\Backup\log.txt»
exit
Здесь:
- SERVER-2008R2\SQLEXPRESS — путь к экземпляру сервера СУБД в формате ИмяСервера\ИмяЭкземпляра
- backup_script_erp_base — имя файла, сохраненного на предыдущем шаге
- F:\Backup\log.txt — в этот файл будет сохраняться журнал сообщений при выполнении резервного копирования. В случае возникновения ошибки, её можно будет увидеть в этом файле.
Проверяем работу созданного файла: кликаем по нему 2 раза и через некоторое время в каталоге должен появиться файл бэкапа. Если появился — двигаемся дальше. Если нет — нужно смотреть какие ошибки содержаться в log.txt и устранить их.
Далее переходим в планировщик windows. Для этого можно воспользоваться сочетанием клавиш Win + R (выполнить) и в появившемся окне ввести taskschd.msc:
В открывшемся окне переходим в меню Действия — Создать задачу и указываем имя задачи:
На закладке Триггеры настраиваем с какой периодичностью нужно выполнять задачу:
На заключительном этапе необходимо указать действие нашего задания, для этого необходимо перейти на складку «Действия» и нажать кнопку «Создать».
В данном примере действием будет запуск файла create_backup_erp_base.bat, который мы создавали ранее.
Сохраняем изменения с помощью кнопки OK. В результате в списке заданий планировщика появится назначенное задание:
На этом настройка автоматического резервного копирования базы данных для MS SQL Server Express завершена.
Таким образом, в этой статье мы пошагово разобрали процесс настройки автоматического резервного копирования базы данных при использовании MS SQL Server Express.