Как настроить автоматическое резервное копирование в 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 кликнуть правой кнопкой по той базе данных, для которой нужно настроить резервное копирование. В контекстном меню перейти в Задачи — Создать резервную копию:

В открывшемся диалоговом окне нужно убедиться, что тип резервной копии стоит «Полная» (Full), при необходимости можно задать имя и описание, а также указать назначение резервной копии. По умолчанию выбран путь на жестком диске компьютера в папку Backup основного расположения баз SQL-сервера. Для того чтобы изменить место размещения копии, сначала надо нажать «Удалить» (Remove), чтобы удалить существующее назначение, а затем «Добавить» (Add…) для добавления нового.

Далее нужно на вкладке «Параметры» (Options), можно указать, что резервную копию необходимо проверить после выполнения, а также задать другие параметры надежности. Рекомендуется установить флаг «Проверить резервную копию после завершения»:

После этого нажимаем на кнопку Скрипт в верхней части формы и в результате откроется скрипт по созданию резервной копии с учетом произведенных на форме настроек:

Ниже приведен скрипт с учетом небольших корректировок: в имени файла добавляется дата создания бэкапа:

--path - переменная, в которой хранится путь к файлу бэкапа
--ШАГ 1 - Создание бэкапа в указанном каталоге
declare @path varchar(max)=N'F:BackupDATABASE_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:BackupDATABASE_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:Backuplog.txt»
sqlcmd -S SERVER-2008R2SQLEXPRESS -i F:Backupackup_script_erp_base.sql -o «F:Backuplog.txt»
exit

Здесь:

  • SERVER-2008R2SQLEXPRESS — путь к экземпляру сервера СУБД в формате ИмяСервераИмяЭкземпляра
  • backup_script_erp_base — имя файла, сохраненного на предыдущем шаге
  • F:Backuplog.txt — в этот файл будет сохраняться журнал сообщений при выполнении резервного копирования. В случае возникновения ошибки, её можно будет увидеть в этом файле.

Проверяем работу созданного файла: кликаем по нему 2 раза и через некоторое время в каталоге должен появиться файл бэкапа. Если появился — двигаемся дальше. Если нет — нужно смотреть какие ошибки содержаться в log.txt и устранить их.

Далее переходим в планировщик windows. Для этого можно воспользоваться сочетанием клавиш Win + R (выполнить) и в появившемся окне ввести taskschd.msc:

В открывшемся окне переходим в меню Действия — Создать задачу и указываем имя задачи:

На закладке Триггеры настраиваем с какой периодичностью нужно выполнять задачу:

На заключительном этапе необходимо указать действие нашего задания, для этого необходимо перейти на складку «Действия» и нажать кнопку «Создать».

В данном примере действием будет запуск файла create_backup_erp_base.bat, который мы создавали ранее.

Сохраняем изменения с помощью кнопки OK. В результате в списке заданий планировщика появится назначенное задание:

На этом настройка автоматического резервного копирования базы данных для MS SQL Server Express завершена.

Таким образом, в этой статье мы пошагово разобрали процесс настройки автоматического резервного копирования базы данных при использовании MS SQL Server Express.

2 Comments

  1. igordynets

    В редакции Express планы обслуживания недоступны, к сожалению) Поэтому и пришлось настраивать вручную.

    Reply
  2. aspirator23

    Еще бы добавить удаление старых архивов, чтобы не переполнить диск с архивами

    Reply

Leave a Comment

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