Консультация Беларусь
Консультация Россия
Блог

Как настроить автоматическое резервное копирование в MS SQL Server Express

При использовании MS SQL Server редакции Express, которая является бесплатной, важно понимать, что она имеет ряд ограничений. Кроме того что размер базы данных при использовании MS SQL Server Express не может превышать 10 Гб, в составе этой редакции СУБД отсутствует SQL Server Agent, который позволяет создавать планы обслуживания баз данных для регулярного автоматического выполнения. В результате нет возможности автоматизировать резервное копирование базы данных штатными средствами.

Однако выход из ситуации есть. Ниже описана инструкция по настройке автоматического резервного копирования для MS SQL Server Express 2008.

Для автоматизации резервного копирования нужно написать sql скрипт. За основу можно взять скрипт, который выполняется при выполнении стандартной задачи — Создать резервную копию.
Для этого нужно в SQL Management Studio кликнуть правой кнопкой по той базе данных, для которой нужно настроить резервное копирование. В контекстном меню перейти в Задачи — Создать резервную копию:
image
В открывшемся диалоговом окне нужно убедиться, что тип резервной копии стоит «Полная» (Full), при необходимости можно задать имя и описание, а также указать назначение резервной копии. По умолчанию выбран путь на жестком диске компьютера в папку Backup основного расположения баз SQL-сервера. Для того чтобы изменить место размещения копии, сначала надо нажать «Удалить» (Remove), чтобы удалить существующее назначение, а затем «Добавить» (Add…) для добавления нового.
image
Далее нужно на вкладке «Параметры» (Options), можно указать, что резервную копию необходимо проверить после выполнения, а также задать другие параметры надежности. Рекомендуется установить флаг «Проверить резервную копию после завершения»:
image
После этого нажимаем на кнопку Скрипт в верхней части формы и в результате откроется скрипт по созданию резервной копии с учетом произведенных на форме настроек:
image
Ниже приведен скрипт с учетом небольших корректировок: в имени файла добавляется дата создания бэкапа:--------------------------------------------------------------------------------------------------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 с помощью команды Файл — Сохранить как:

image
В открывшемся диалоге нужно выбрать папку, в которую нужно сохранить скрипт:
image
Далее с помощью обычного блокнота нужно создать файл 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 — в этот файл будет сохраняться журнал сообщений при выполнении резервного копирования. В случае возникновения ошибки, её можно будет увидеть в этом файле.
image
Проверяем работу созданного файла: кликаем по нему 2 раза и через некоторое время в каталоге должен появиться файл бэкапа. Если появился — двигаемся дальше. Если нет — нужно смотреть какие ошибки содержаться в log.txt и устранить их.Далее переходим в планировщик windows. Для этого можно воспользоваться сочетанием клавиш Win + R (выполнить) и в появившемся окне ввести taskschd.msc:
image
В открывшемся окне переходим в меню Действия — Создать задачу и указываем имя задачи:
image
На закладке Триггеры настраиваем с какой периодичностью нужно выполнять задачу:
image
На заключительном этапе необходимо указать действие нашего задания, для этого необходимо перейти на складку «Действия» и нажать кнопку «Создать».В данном примере действием будет запуск файла create_backup_erp_base.bat, который мы создавали ранее.
image
Сохраняем изменения с помощью кнопки OK. В результате в списке заданий планировщика появится назначенное задание:
image
На этом настройка автоматического резервного копирования базы данных для MS SQL Server Express завершена.