Скрипт автоматического бекапа базы данных Microsoft SQL Server 2005 с архивированием и копированием БД на другой сервер
Обновлено Суббота, 9 Июль 2011 12:00 Опубликовано от имено admin Пятница, 28 Январь 2011 03:39
Для того, что бы сделать бекап базы данных SQL Server 2005 нужно выполнять такой скрипт
Сделаем бекап двух БД, которые есть, это doc и mexp, создадим bat файл под названием back__.bat
set DIR_BACKUP=D:\Mega_backup\backupMSSQL_%date%\
set NAME_PC=server
md %DIR_BACKUP%
osql -S %NAME_PC% -E -Q “BACKUP DATABASE doc TO DISK = ‘%DIR_BACKUP%\doc.bak‘ with init”
md D:\Mega_backup\backupMSSQL_%date%
md \\10.0.0.200\sql\backupMSSQL_%date%
Echo End waitset DIR_BACKUP=D:\Mega_backup\backupMSSQL_%date%\
set NAME_PC=server
md %DIR_BACKUP%
osql -S %NAME_PC% -E -Q “BACKUP DATABASE mexp TO DISK = ‘%DIR_BACKUP%\mexp.bak’ with init”
md D:\Mega_backup\backupMSSQL_%date%
md \\10.0.0.200\sql\backupMSSQL_%date%
Echo End waitstart winrar a \\10.0.0.200\sql\backupMSSQL_%date%\%date%.rar D:\Mega_backup\backupMSSQL_%date%\*.*
rem //Строчка внизу архивирует базы, которые мы создали скриптом
%NAME_PC% - переменная, которая содержит имя копьютера
osql -S %NAME_PC% -E -Q “BACKUP DATABASE mexp TO DISK = ‘%DIR_BACKUP%\mexp.bak’ with init” собственно скрипт запуска бекапирования БД mexp TO DISK = ‘%DIR_BACKUP%\mexp.bak
TO DISK = ‘%DIR_BACKUP%\mexp.bak сохраним на диск с таким названием в папку %DIR_BACKUP%
\\10.0.0.200\sql\backupMSSQL_%date% расшареная папка на другой машине, с правами доступа для пользователя, который выполняет скрипт бекапа, как правило это админский пароль и если машина находится в домене, то проблем не должно быть.
\\10.0.0.200\sql\backupMSSQL_%date%\%date%.rar – как назовем файл, в данном случае создастся файл с датой запуска и расширением *.rar
Сохраняем скрипт и добавляем его в планировщик заданий. Добавляем на выполнение на пол первого ночи
Сначала мы бекапируем на локальный диск, а потом по сети архивируем в расшареную папку на другом компьютере.
Второй скрип делается для того, что бы зачистить локальные копии, то есть папки D:\Mega_backup\backupMSSQL_%date%\
del /Q D:\Mega_backup\backupMSSQL_%date%\
Ну запускаем его гораздо позже после запуска первого скрипта
/Q – соглашаться с удалением при запуске команды
Готовые скрипты можна взять здесь
Популярное
- Топ 5 бесплатных антивирусов (24)
- Топ 10 антивирусных программ 2011 (11)
- Мотивация сотрудников сферы ИТ (6)
- Скрипт автоматического бекапа базы данных Microsoft SQL Server 2005 с архивированием и копированием БД на другой сервер (5)
- Acrobat Reader! (4)
- “Fatal error: Call to undefined function curl_init() (3)


Хотелось бы по лучше разобраться с этим скриптом,т.к. у меня не получается его сделать.
[Ответить]
Все от слов “set DIR_BACKUP=D:\Meg…” и до “start winrar a \\10.0.0.200\sql\backupMSSQL_%date%\%date%.rar D:\Mega_backup\backupMSSQL_%date%\*.*” сохраняете в bat-файл и запускаете на сервере, красным выделены базы данных MSSQL
Должен получиться архивный файл с базами данных
[Ответить]
bagouser Reply:
Июль 7th, 2011 at 4:20
я переверстал Ваш код под себя и получилось вот что :
set DIR_BACKUP=D:\SQL_backup\backup\ASP_%date%
set NAME_PC=test
md %DIR_BACKUP%
“C:\Program Files\Microsoft SQL Server\90\Tools\Binn\OSQL.EXE” -S %NAME_PC% -E -Q “BACKUP DATABASE ASPnetKP TO DISK = ‘%DIR_BACKUP%\ASPnetKP.bak’ with init” > D:\\SQL_backup\backuplog.txt
md D:\SQL_backup\backup\ASP_%date%
md D:\SQL_backup\arhiv\ASP_arhiv_%date%
“C:\Program Files\7-Zip\7z.exe” a D:\SQL_backup\arhiv\ASP_arhiv_%date%\ASP_arhiv_%date%.7z “D:\SQL_backup\backup\ASP_%date%\*.*” > D:\\SQL_backup\arhivlog.txt
т.е. скрипт делает бэкап,архивирует с помощью 7zip и кидает куда нужно,причём ведет лог бэкапа и архивации. Теперь у меня стоит такая задача, нужно сделать имена файлов не просто ASP_%date% (date – дд.мм.гггг), а ASP_гггг.мм.дд_время. Не могу это реализовать,так как не хватает знаний. Ищу помощи. Жду ответа.
[Ответить]
admin Reply:
Июль 7th, 2011 at 15:21
%TIME: =0%
set now=%DATE: =0% %TIME: =0%
for /f “tokens=1-7 delims=/-:., ” %%a in ( “%now%” ) do (
set now=%%c%%b%%a_%%d%%e
)
start winrar a “D:\12\ASP_%now%.rar” “D:\12\*.*”
В этом случае все записи в папке “D:\12\” будут помещены в архив “D:\12\ASP_20110707_1619.rar”
Ну папки под себя настраивайте как угодно
– %%a – день
– %%b – месяц
– %%c – год
– %%d – часы
– %%e – минуты
– %%f – секунды
– %%g – сотые
Если помогло, то вопрос закрыт, как я считаю
Обращайтесь. И не спрашивайте как это)
[Ответить]
bagouser Reply:
Июль 8th, 2011 at 6:35
оперативненько, но я кстати тоже не скучао и всё таки довёл до ума этот батник и выглядит он теперь так:
SET ASDF=”%date:~-4,4%.%date:~-7,2%.%date:~-10,2%_%time:~-11,2%.%time:~-8,2%.txt”
set DATE=”%date:~-4,4%.%date:~-7,2%.%date:~-10,2%_%time:~-11,2%.%time:~-8,2%”
md %dir_backup%
set DIR_BACKUP=D:\SQL_BackUp\BackUp\
set NAME_PC=test
md %DIR_BACKUP%
“C:\Program Files\Microsoft SQL Server\90\Tools\Binn\OSQL.EXE” -S %NAME_PC% -E -Q “BACKUP DATABASE ASPnetKP TO DISK = ‘%DIR_BACKUP%\ASPnetKP.bak’ with init” > D:\\SQL_BackUp\log_BackUp_%ASDF%
md D:\SQL_BackUp\BackUp\
md D:\SQL_BackUp\Arhiv\
“C:\Program Files\7-Zip\7z.exe” a D:\SQL_BackUp\Arhiv\ASP_Arhiv_%DATE%.7z “D:\SQL_BackUp\BackUp\*.*” > D:\\SQL_BackUp\log_Arhiv_%ASDF%
md C:\Arhiv_copy
xcopy D:\SQL_BackUp\Arhiv\ASP_Arhiv_%DATE%.7z C:\Arhiv_copy
del /f/q D:\SQL_BackUp\BackUp\*.bak
Как я всё таки смог? очень просто, посещал кучу форумов и читал огромное количество соответствующей литературы. На многих сайтах и форумах есть готовые решения,но они не соответствуют моей полной задаче
поэтому решил разобраться с этим и написать под себя универсальный,а главное понятный и простой bat – файл. Всё готово,всё работает! Тока еще в планах тут же добавить удаление бэкапов по условию (т.е. старых и не нужных),но сейчас пока не могу это сделать,да и времени не хватает. Если кто может помочь отпишитесь.