Создание Backup`ов средствами Windows (+архивирование)

by Alexey Knyazev 17. марта 2009 16:37

Не редко встаёт вопрос, как создать BackUp какой-либо базы данных средствами Windows. Особенно эта тема актуальна в бесплатных редакциях SQL Server (MSDE, Express), где SQL Agent вообще отсутствует. Реализуется это проще, чем может показаться.

Для теста создаём папку C:\BackupDB. В ней создаём файл SQLCommand.txt с текстом (командой на T-SQL):

DECLARE @str NVARCHAR(255) 
SET @str='C:\BackupDB\master_'+CONVERT(VARCHAR, GETDATE(), 105)+'.bak' 
BACKUP DATABASE master TO DISK=@str

В этом примере мы создаём в нашей папке BackUp системной базы данных master с именем =’master_[текущая дата].bak’.

Но мы не хотим хранить наши Backup`ы в обычном формате, мы хотим сэкономить дисковое пространство и хранить их в виде архивов. Проблема в том, что архивирование копий БД появилось только в SQL Server 2008, да и то, только в полной редакции. Для архивирования я буду использовать 32-разрядную консольную версию RAR (http://www.rarlab.com/).

Файл Rar.exe копируем в нашу папку C:\BackupDB. Так же создадим папку C:\BackupDB \BackupArchive, где будем хранить наши заархивированные копии базы. Ну вот собственно и всё, осталось создать .bat файл который и будет создавать копию базы, архивировать её и кидать в папку BackupArchive. Создаём в папке C:\BackupDB файл rar.bat с текстом:

  • sqlcmd -E -i SQLCommand.txt -o Result.txt
  • rar.exe a -df -inul -ag[dd_mm_yyyy] C:\BackupDB\BackupArchive\master.rar C:\BackupDB\*.bak

sqlcmd.exe-это утилита командной строки для SQL Server 2005/2008 присутствует во всех редакциях. В более ранних версиях osql.exe(SQL Server 2000), isql.exe(SQL Server 7.0). Их синтаксис очень похож и более подробное описание по командам можно прочитать в BOL (http://technet.microsoft.com/ru-ru/library/ms162773.aspx).

У меня в примере запускается утилита с параметрами SQL Server по умолчанию (local), авторизация Windows, на входе файл с командами SQLCommand.txt и результат работы вывожу в файл Result.txt. После чего я архивирую полученный Backup и помещаю в папку C:\BackupDB\BackupArchive, чтобы получить помощь по командам консольной версии RAR, необходимо запустить её с параметром rar.exe -?

PS: Будут вопросы, пишите…

(Как создать само задание, можно прочитать тут - http://support.microsoft.com/default.aspx/kb/308569 )

Tags:

SQL Server

Комментарии (5) -

DDD
DDD Russia
26.10.2010 23:05:02 #

Thank's a lot!

Reply

seogrot
seogrot United States
06.04.2011 5:07:18 #

Спасибо за статью. Как раз знакомый постучался, нужно Backup сделать. Вот нагуглил Ваш блог.

Reply

Serg
Serg Russia
14.06.2011 2:18:45 #

Спасибо !
ТО, что нужно для Express редакции, что бы спать спокойнее Smile

Reply

Валерий
Валерий Russia
16.02.2013 2:12:43 #

Извини за тупость.
Скрипт архивации раром архивирут все базы сервера или нужно для каждой базы запускать отдельно.
Я имею ввиду второй пример с рар.
Спасибо

Reply

Полина
Полина Belgium
16.02.2013 7:32:07 #

Здорово! Очень просто и быстро! Спасибо большое Smile

Reply

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

  Country flag

biuquote
  • Комментарий
  • Предпросмотр
Loading