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