Создание автобэкапа на SQL Server Express Edition 2005/2008/2008R2

среда, 21 июля 2010, Novak Sergey

Часто у администратора баз данных постает вопрос, как создать BackUp базы данных средствами Windows? Тема становиться актуальной, когда речь идет о бесплатных редакциях SQL Server (MSDE или Express) у которых отсутствует SQL Server Agent.

Для теста создаем папку C:\BackUpDBMSSQL, в которую помещаем файл BackUp_Full_DB.sql следующего содержания:

--Создает полный бэкап в формате 'Full_TestDB_DD.MM.YYYY-HH.MM.SS.bak' Full_TestDB_21.07.2010-19.18.09.bak

DECLARE @to varchar(100)

DECLARE @dbname varchar(100)

DECLARE @path varchar(400)

---------------------------------

SET @dbname = 'TestDB' -- имя базы данных

SET @to = 'C:\BackUpDBMSSQL\' -- Каталог хранения

---------------------------------

SET @path = @to + 'Full_' + @dbname + '_' +

cast(day(getdate()) as varchar(5)) + '.' +

cast(month(getdate()) as varchar(5)) + '.' +

cast(year(getdate()) as varchar(5)) + '-' +

replace(cast(CONVERT(varchar(8), GETDATE(), 108) as varchar(8))+ '.bak', ':', '.')

BACKUP DATABASE @dbname TO DISK = @path WITH NOFORMAT, INIT,

NAME = @dbname,

SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM

GO

Данный скрипт создает полную резервную копию базы TestDB.

Теперь нам нужно используя утилиту sqlcmd запустить наш скрипт через C:\BackUpDBMSSQL\BackUpFull.bat файл. Содержимое BackUpFull.bat файла:

sqlcmd -S server_name[\instance_name] -i BackUp_Full_DB.sql -o LogBackUpFull.txt

где sqlcmd - это утилита командной строки для SQL Server 2005/2008 присутствует во всех редакциях. В более ранних версиях osql.exe (SQL Server 2000), isql.exe (SQL Server 7.0). Их синтаксис очень похож и более подробное описание по командам можно прочитать в BOL;

BackUp_Full_DB.sql – скрипт выполнения BackUp базы TestDB;

LogBackUpFull.txt – лог выполнения бэкапа.

А теперь вставляем C:\BackUpDBMSSQL\BackUpFull.bat файл в встроенный планировщик заданий Windows и планируем выполнение резервного копирования.

Как создавать задание, можно прочитать тут

По такому же принципу создаем разностную (дифференциальную) копию базы. Создаем файл C:\BackUpDBMSSQL\BackUp_Diff_DB.sql

--Создает дифференциальный бэкап в формате 'Diff_TestDB_DD.MM.YYYY-HH.MM.SS.bak' Diff_21.07.2010-19.21.09.bak

DECLARE @to varchar(100)

DECLARE @dbname varchar(100)

DECLARE @path varchar(400)

---------------------------------

SET @dbname = 'TestDB' -- имя базы данных

SET @to = 'C:\BackUpDBMSSQL\' -- Каталог хранения

---------------------------------

SET @path = @to + 'Diff_' + @dbname + '_' +

cast(day(getdate()) as varchar(5)) + '.' +

cast(month(getdate()) as varchar(5)) + '.' +

cast(year(getdate()) as varchar(5)) + '-' +

replace(cast(CONVERT(varchar(8), GETDATE(), 108) as varchar(8))+ + '.bak', ':', '.')

BACKUP DATABASE @dbname TO DISK = @path WITH DIFFERENTIAL , NOFORMAT, INIT,

NAME = @dbname,

SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM

GO

И запускаем C:\BackUpDBMSSQL\ BackUp_Diff_DB.sql через C:\BackUpDBMSSQL\BackUpDiff.bat файл. Содержимое BackUpDiff.bat файла:

sqlcmd -S server_name[\instance_name] -i BackUp_Diff_DB.sql -o LogBackUpDiff.txt

BackUp_Diff_DB.sql – скрипт выполнения BackUp базы TestDB;

LogBackUpDiff.txt – лог выполнения бэкапа.

Если нужно сэкономить на дисковом пространстве можно архивировать резервные копии в C:\BackUpDBMSSQL\Archive\

"C:\Program Files\WinRAR\winrar.exe" a C:\BackUpDBMSSQL\Archive\master_ -agDDMMYYYY *.bak -m1 -df –ibck

"C:\Program Files\WinRAR\winrar.exe" – путь где установлен архиватор;

а – команда добавить файл в архив;

agDDMMYYYY – добавить к имени архива текущие дату и время;

m1 – метод сжатия;

df – удалить файлы после архивации;

ibck – выполняет архивацию в фоновом режиме.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии