Однако выход из ситуации есть. Ниже описана инструкция по настройке автоматического резервного копирования для MS SQL Server Express 2008.
Для автоматизации резервного копирования нужно написать 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 — в этот файл будет сохраняться журнал сообщений при выполнении резервного копирования. В случае возникновения ошибки, её можно будет увидеть в этом файле.
В открывшемся окне переходим в меню Действия — Создать задачу и указываем имя задачи:
На закладке Триггеры настраиваем с какой периодичностью нужно выполнять задачу:
На заключительном этапе необходимо указать действие нашего задания, для этого необходимо перейти на складку «Действия» и нажать кнопку «Создать».В данном примере действием будет запуск файла create_backup_erp_base.bat, который мы создавали ранее.
Сохраняем изменения с помощью кнопки OK. В результате в списке заданий планировщика появится назначенное задание:
На этом настройка автоматического резервного копирования базы данных для MS SQL Server Express завершена.