Создание Bаckup`ов и их архивирование средствами планировщика Windows (часть 3)

by Alexey Knyazev 3. апреля 2009 18:02

В продолжение первых 2х скриптов, выкладываю скрипт написанный на VBS, дело в том, что не все желают ставить на "старые" ОС Power Shell.

Как и в прошлый раз в качестве архиватора буду использовать 7Zip.

 

 

 

'Путь к 7Zip архиватору
SevenZipPath="C:Program Files7-Zip7z.exe"

'Параметры архивирования (все команды можно посмотреть в хелпе)
SevenZipArguments=" a -r -mx "

'Папка куда складываются ваши БэкАпы
BackupFolder="C:BackupDB"

'Папка с архивами ваших БэкАпов
ArcFolder="C:BackupDBBackupArchive"

'Имя архива с текущей датой
ArcName="C:BackupDBBackupArchive"&Date&".zip"

'Создаём сами БэкАпы
Set oServer = CreateObject("SQLDmo.SqlServer")
Set oBackup = CreateObject("SQLDmo.Backup")
oServer.LoginSecure = True 'авторизация Windows
oServer.Connect "(local)"  'сервер (local)

'Перебираем все БД на сервере и находим нашу(-ши) базы, необходимые для БэкАпирования
For Each oDatabase In oServer.Databases 

'Можно изменить условие на список нужных БД или напротив лишь те, которые исключаем
If UCase(oDatabase.Name) = "MASTER" Then
oBackup.Database = oDatabase.Name
oBackup.Initialize = True 

'Создаём БэкАп базы с её именем
oBackup.Files = BackupFolder & "" & oDatabase.Name & ".bak"

'0 = Full backup
'1 = Differential
'2 = Specified files only
'3 = Log backup
oBackup.Action = 0
oBackup.SQLBackup oServer
End If 

Next 

Set oBackup = Nothing
oServer.DisConnect
Set oServer = Nothing

'Архивируем
Set Shell=CreateObject(“WScript.Shell”)
Set Zip=Shell.Exec(SevenZipPath&SevenZipArguments&" "&ArcName&" "&BackupFolder&"*.bak")

'Необходимо ожидание, пока архивирование не закончится
While (Zip.Status=0)
WScript.Sleep 1000
Wend

'Удаляем все *.BAK файлы
Dim FSO
Dim TheFolder, TheFiles, AFile

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder(BackupFolder)
Set TheFiles = TheFolder.Files

For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "BAK" Then
AFile.Delete
End If

Next

'Удаление старых архивы с БэкАпами (старше 30 дней)
Set TheFolder = FSO.GetFolder(ArcFolder)
Set TheFiles = TheFolder.Files

For Each AFile In TheFiles

If UCase(FSO.GetExtensionName(AFile.Path)) = "ZIP" and _
DateDiff("d", AFile.DateLastModified, Date) >30 Then
AFile.Delete
End If

Next

Set Shell=Nothing
Set FSO=Nothing

MsgBox "Готово!!!"

 

Скачать в виде файла- BackupDB.vbs

 

 

Tags: , ,

SQL Server

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

Oz
Oz Russia
06.07.2011 17:16:35 #

Супер скрипт! Как раз на сервере старом не установлен Power Shell. Но вот проблемка, пробовал скрипт использовать как джоб скульный и как шедул виндовый, но вот беда - архив то создается и как полагается с именем файла текущей даты архивации и сообщение Готово! получаю, НО архив пустой. Что может быть не так?
Спасибо заранее!

Reply

Oz
Oz Russia
06.07.2011 17:21:14 #

ах да, на всякий случай вот лог если запускать через скуль-джоб:
Date,Source,Severity,Step ID,Server,Job Name,Step Name,Notifications,Message,Duration,Sql Severity,Sql Message ID,Operator Emailed,Operator Net sent,Operator Paged,Retries Attempted
07/06/2011 12:18:45,11,Error,0,МОЙСЕРВЕР,11,(Job outcome),,The job failed.  The Job was invoked by User домен\юзер.  The last step to run was step 1 (11).,00:00:01,0,0,,,,0
07/06/2011 12:18:46,11,Error,1,МОЙСЕРВЕР,11,11,,Executed as user: домен\юзер. Error Code: 0  Error Source= Ошибка выполнения Microsoft VBScript  Error Description: Требуется объект: 'WScript'    Error on Line 49.  The step failed.,00:00:00,0,0,,,,0

Reply

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

  Country flag

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