Автоматизируем бэкап баз данных MSSQL Express

Дата: 26.05.2015 Автор Admin

В данной статье мы рассмотрим как настроить автоматическое резервное копирование баз данных MSSQL расположенных на бесплатном MSSQL Express.

Для автоматизации резервного копирования напишем следующий sql скрипт:

Кодировка скрипта должны быть — UCS-2 Little Endian

Рассмотрим параметры скрипта:

Путь куда сохранять резервные копии указывается тут — C:\Backup\

Имя резервной копии будет начинаться с BASE__ и заканчиваться датой резервного копирования.

Имя базы, которую мы будем сохранять задается тут:

И тут:





Далее открываем планировщик задач Windows и создаем новую задачу.

В поле «действие» выбираем «Запуск программы»

Путь к программе — «C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE»

Аргументы — -S \sqlexpress  -i «C:\Backup_ScriptDir\backup.sql»

Рассмотрим параметры:

-S \sqlexpress путь к инстансу MSSQL, в данном примере инстанс sqlexpress

Если у вас используется локальный инстанс укажите просто \

-i «C:\Backup_ScriptDir\backup.sql» путь к созданному SQL скрипту.

Готово! Теперь резервное копирование MSSQL баз автоматизированно!


Комментарии

Иван

Спасибо за статью. Очень полезна и актуальна.

Небольшая поправочка по синтаксису:
Нужно добавить точку перед указанием Инстанса SQL, в вашем примере:
-S .\sqlexpress -i «C:\Backup_ScriptDir\backup.sql»
Либо указать название сервера полностью: -S server_name\sqlexpress -i «C:\Backup_ScriptDir\backup.sql»
И примечание: при создании задания в «Планировщике задач» указать пользователя, имеющего административные права в SQL Server.
Также удобно добавить к файлику расширение ‘.bak’, чтобы было проще восстановить бэкап.
Ещё Майкрософт не рекомендует использовать в запросе признак конца GO при использовании утилиты «SQLCMD.EXE», так как при его использовании запрос выполняется сразу.
ссылка на статью: https://msdn.microsoft.com/ru-ru/library/ms162773(v=sql.120).aspx

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

declare @path varchar(max)=N’C:\Backup\BASE_backup_’+convert(varchar(max),getdate(),102)+’.bak’
BACKUP DATABASE [BASE_NAME] TO DISK = @path WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N’BASE_NAME-Полная База данных Резервное копирование’, SKIP, NOREWIND, NOUNLOAD, STATS = 10

АЛЕКС

а в сетевые папки будет копировать?

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

Ваш адрес email не будет опубликован.