Автоматический бэкап БД на SQL Server Express Edition

Материал из Alta-Soft Wikipedia
Версия от 16:12, 3 апреля 2013; Smorodin (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Создание исполняемого файла

Создаем текстовый файл, например backupGTD следующего содержания:

sqlcmd -S DECLSERVER\SQLGTD -E -Q "declare @s varchar(255) set @s='E:\backup\GTD_' + convert(varchar(1), datepart(dw, getdate())) + '.bak' backup database GTD to disk = @s with init, noformat, skip, nounload"

Sqlcmd позволяет вводить инструкции Transact-SQL, системные процедуры и файлы скриптов из командной строки в редактор запросов в режиме SQLCMD

где:

-S -задает имя сервера server[\instance_name]

DECLSERVER\SQLGTD – имя сервера\имя экземпляра, на котором крутится база.

-E -Использует для соединения с SQL Server вместо имени пользователя и пароля доверительное соединение.

-Q " cmdline query " - При запуске программы sqlcmd выполняет запрос, но выход из программы по завершении его выполнения не производится. Может быть выполнено несколько запросов, разделенных точкой с запятой. Заключайте запрос в кавычки, как показано выше.

declare – объявляем переменную s ,имя переменной всегда начинается с @, поэтому @s. В нашем случае @s это папка (диск) хранения бэкапов.

varchar(n) – задает тип переменной @s как строковый с длинной строки n, в примере 255 символов

set – задает значение переменной @s, в примере это папка backup на диске E (E:\backup\), далее задается имя бэкап файла, где набор функций convert(varchar(1), datepart(dw, getdate())) возвращает в текстовом формате с длинной в 1 символ текущий день недели (понедельник – 1, вторник – 2, и т.д.) и добавляется расширение bak? На выходе получим файл с именем GTD_номер дня недели.bak.

backup – создает бэкап

database – указывает на создание бэкапа всей базы

GTD – в нашем примере имя базы на SQL сервере

to disk – указывает на тип устройства резервного хранения, файл жесткого диска, и указана переменная @s, которой присвоено путь и имя создаваемого файла.

with init, noformat, skip, nounload –указывает на то, что необходимо произвести перезапись данных по кругу с переопределением заголовков, что позволит нам иметь 7 файлов бэкапа на каждый день недели, перезаписываемые по кругу.

Примечание: При необходимости можно использовать массу других функций, например сжатие, см. справку по запросам и функциям Transact-SQL».

Меняем расширение текстового файла на .cmd (получаем backupGTD.cmd).

Запускать необходимо с той машины, где установлена БД MS SQL

Примечание: Готовый файл находится в папке X:\Alta\utils


Автоматизация процесса

Автоматизируем процесс (на примере Microsoft Windows Server 2008):


  • Заходим в Диспетчер сервера -> Конфигурация -> Планировщик заданий -> Библиотека планировщика заданий.


  • Создаем простую задачу:

SozdatZadachu.jpg


  • Задаем имя и описание,

SozdatZadachu2.jpg


  • Указываем периодичность (ежедневно),

SozdatZadachu3.jpg


  • Регулярность повторений и время выполнения,

SozdatZadachu4.jpg


  • В качестве действия указываем запуск программы,

SozdatZadachu5.jpg


  • Указываем путь к нашему файлу backupGTD.cmd,

SozdatZadachu6.jpg


  • Поставьте чекбокс «открыть свойства»

SozdatZadachu7.jpg


  • В свойствах указываем, что выполнять нужно вне зависимости от регистрации пользователя и указать логин пароль учетной записи с правами администратора (спросит позже).

SozdatZadachu8.jpg

На закладках условия и параметры можете задать дополнительные условия выполнения (не обязательно).


  • На выходе мы будем иметь примерно такую картину:

SozdatZadachu9.jpg