Назад | Перейти на главную страницу

Резервное копирование баз данных из базы данных MS SQL Server 2008 Express с помощью пакетного скрипта

Мне нужен пакетный сценарий для резервного копирования выбранных баз данных из Microsoft SQL 2008 Express Edition. К сожалению, в выпуске MS SQL Server 2008 Express отсутствуют инструменты визуального резервного копирования баз данных, которые называются «Обслуживание» в MS SQL 2008 Standard, поэтому нам нужен пакетный сценарий для резервного копирования баз данных.

Я написал универсальный скрипт для резервного копирования выбранных баз данных из MS Sql Server Express. Сценарий проходит через массив баз данных и генерирует отдельный .bak для каждой базы данных. Имя файла резервной копии начинается с имени базы данных и заканчивается временем и датой. События регистрируются в файле log.log, включая детали задачи резервного копирования базы данных, поэтому существующие резервные копии не перезаписываются. Также некоторые мелкие детали, такие как время начала резервного копирования.

В этом сценарии вам нужно определить массив баз данных, который вы хотите сделать резервную копию, указать пользователя / пароль, а также SQL Server и экземпляр. После этих изменений все, что нужно сделать, это вызвать командный файл из планировщика задач.

Код скрипта:

@echo off

::databases array
set baza[0]=DATABSE_1
set baza[1]=DATABSE_2

::some of variables
set var=%usersa%
set var=%passsa%
set var=%instance%
set "x=0"
set hr=%TIME: =0%
set hr=%hr:~0,2%
set min=%TIME:~3,2%
set sec=%TIME:~6,2%
set czas=%hr%%min%%sec%

::database access data and instance
set usersa=sa
set passsa=sa
set instance=HOSTSERVER\SqlServerName
set backupath=E:\SQL_BACKUP\

echo Backup Start %date%_%czas%>>log.log
echo.>>log.log%%echo.>>log.log%%echo.>>log.log
:loop
if defined baza[%x%] (
    call osql -S %instance% -U %usersa% -P %passsa% -d %%baza[%x%]%% -Q "BACKUP DATABASE %%baza[%x%]%% TO DISK = '%backupath%%%baza[%x%]%%_%date%_%czas%.bak'" >>log.log
    set /a "x+=1"
    GOTO :loop
)
echo.>>log.log%%echo.>>log.log%%echo.>>log.log