Создание автобэкапа на SQL Server Express Edition 2005/2008/2008R2
Часто у администратора баз данных постает вопрос, как создать 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 Украина | Украинское подразделение компании Microsoft. |