Автоматическое резервное копирование (планировщик SQL)

Пред.  Начало  След.

  Назначение задания сервера SQL по резервному копированию.

 

  Вначале создается скрипт (команда) для SQL сервера по созданию резервных копий. Затем создается новая задача в меню "Сервис - Задачи сервера".

  В поле "Наименование" вводится любое понятное название для создаваемой задачи, в поле база данных выбирается база данных, в контексте которой должна выполняться задача (для задачи резервного копирования указать базу master). В поле "Выполняемая команда" вписывается команда на языке Transact-SQL, либо выбирается по кнопке [...] одна из готовых (для готовых после выбора необходимо поправить пути и/или имена объектов).

  Далее в разделе "Планировщик" указать (по кнопке "Создать") периодичность и время выполнения данной команды.

 

  Приводим как пример команду (выделена синим) создания резервной копии, результатом которой является архив в формате rar. Для применения ее в автоматическом режиме скопировать от строки "-- НАЧАЛО КОМАНДЫ РЕЗЕРВНОГО КОПИРОВАНИЯ" и до строки "-- КОНЕЦ КОМАНДЫ РЕЗЕРВНОГО КОПИРОВАНИЯ" и вставить в поле "Выполняемая команда" задач сервера, указать свои значения имени базы данных и путей (раздел ИНИЦИАЛИЗИРОВАТЬ ВРУЧНУЮ) , задать в разделе планировщика периодичность запуска.

 

-- НАЧАЛО КОМАНДЫ РЕЗЕРВНОГО КОПИРОВАНИЯ

-- создание резервной копии базы данных ,  к имени архива базы добавляется время создания копии _ГГГГ-ММ-ДД_ЧЧ-ММ-СС.

-- результат архивируется с удалением исходного файла (если указать архиватор) 

-- полученный архив копируется в заданную папку (если указать эту папку) 

-- перед применением правильно задать значения переменных @cSQLBase и @cPath.... 

 

declare @pdt varchar(30), @cstr varchar(8000), @cSQLBase varchar(50), @cPathBackup varchar(200),  @cPathWinRar varchar(200), @cPathResult varchar(200)

 

------- Инициализировать вручную следующие переменные -------

 

set @cSQLBase = 'budjet_2007'  -- имя базы данных , которую надо периодически архивировать 

set @cPathBackup = 'e:\Backup\' -- путь к папке с резервными копиями относительно SQL сервера (в конце обязат. слеш \ )

set @cPathWinRar = 'e:\backup\WinRAR.exe'  -- путь и имя RAR архиватора на сервере (если пусто '' - не архивируется) 

set @cPathResult = ''  -- папка, куда скопировать архив резервной копии (пусто '' - оставить в папке с резервными копиями @cPathBackup) 

 

--------Резервное копирование--------------

 

set @pdt=rtrim(CONVERT ( varchar(30) , GETDATE ( ) ,120 ))

set @pdt = '_'+ REPLACE ( @pdt , ':' , '-' )

set @pdt = REPLACE ( @pdt , ' ' , '_' )

 

set @cstr = 'BACKUP DATABASE '+@cSQLBase+' TO  DISK = N'''+@cPathBackup+@cSQLBase+@pdt+'.BAK'' WITH  INIT ,  NOUNLOAD ,  NOSKIP ,  STATS = 10,  NOFORMAT'

if @cPathWinRar<>''

set @cstr = @cstr + ' exec master..xp_cmdshell '''+@cPathWinRar+' a -rr5p -df -dh -ibck -inul -ep '+@cPathBackup+@cSQLBase+@pdt+' '+@cPathBackup+@cSQLBase+@pdt+'.bak'''

if @cPathResult<>''

set @cstr = @cstr +' exec master..xp_cmdshell ''copy '+@cPathBackup+@cSQLBase+@pdt+'.rar '+@cPathResult+@cSQLBase+@pdt+'.rar'''

 

execute(@cstr)

 

-- КОНЕЦ КОМАНДЫ РЕЗЕРВНОГО КОПИРОВАНИЯ