Скрипт резервного копирования всех баз MSSQL | VBScript backup all databases on MSSQL server
Необходимость резервного копирования сомнений не вызывает. Тем более резервное копирование баз данных. Но, будучи человеком ленивым (как и любой ТРУ админ), решил упростить себе жизнь. Тем более, что получилось прикрутить архиватор - сжымать архив каждой базы. Для автоматизации процесса резервного копирования, написал скрипт бэкапа ВСЕХ баз сервера MSSQL. А дальше только Scheduled Tasks с необходимой периодичностью)
Особенности:
- аутентификация - Windows (не требует в скрипте указывать логин/пароль доступа к серверу)
- резервируются ВСЕ базы, за исключением системных
- базы сжимаются архиватором, для экономии места (у меня они забираются на ленту, по этому не реализовывал дату в имени)
- все файлы перезаписываются
- логирование процесса (в разработке)
ВАЖНО! Используется архиватор 7zip. Для работы скрипта, нужно скопировать 7z.exe в %WINDIR%\system32.
Перед запуском скрипта меняем значения констант в начале скрипта ('-- SQL Server Values)
Option Explicit
'===========================================================================
' VBScript backup and zip all databases MS SQL Server
'===========================================================================
' Date : 30/10/2009
' Auth : Ruslan Sheremet
' Updt : -
'===========================================================================
'-- SQL Server Values
Const SQL_SERVER = "sql-server-name"
Const DirSourse = "dir to backup" '-- like D:\tmp\
Const DirDestination = "dir to zip" '-- like D:\tmp\zip\
Const SQLDMOBackup_Database = 0 '
Const SQLDMOBackup_Log_Truncate = 0 '
'-- SQL Variables
Dim oSQLBackUp, oSQLServer, oDB, X, strFileName, strFullPath
'-- Connect to MSSQL Server Windows Authentication
set oSQLServer = CreateObject("SQLDMO.SQLServer")
oSQLServer.LoginSecure = True
oSQLServer.Name = SQL_SERVER
oSQLServer.Connect
'-- SQL Back Up
Set oSQLBackUp = CreateObject("SQLDMO.BackUp")
'-- Check Connection Status
If oSQLServer.Status = 1 Then
'-- Loop Thru Databases
For X = 1 To oSQLServer.Databases.Count
Set oDB = oSQLServer.Databases(X)
'-- Ignore System Objects
If oDB.SystemObject = False Then
'-- Name to Back Up To
strFileName = Trim(oDB.Name) & ".BAK"
strFullPath = DirSourse & Trim(oDB.Name) & ".BAK"
'-- Back Up database
oSQLBackUp.Action = SQLDMOBackup_Database
oSQLBackUp.BackupSetName = "BackUp " & oDB.Name
oSQLBackUp.BackupSetDescription = "BackUp " & oDB.Name
oSQLBackUp.Database = oDB.Name
oSQLBackUp.Files = strFullPath
oSQLBackUp.TruncateLog = SQLDMOBackup_Log_Truncate
oSQLBackUp.Initialize = True '-- Overwrite existing .bak file
oSQLBackUp.SQLBackup oSQLServer
'-- zip ".bak" file
'-- 7z.exe must be in %WINDIR%\system32\
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "7z.exe a -tzip " & DirDestination & strFileName & ".zip " & strFullPath & " > " & DirDestination & strFileName & ".log",0,1
End If
Next
End If
'-- Disconnect
oSQLServer.DisConnect
oSQLServer.Close
'-- Destroy SQL Objects
Set oSQLBackUp = Nothing
Set oDB = Nothing
Set oSQLServer = Nothing
© rublin.org, 2009 - 2012 Буду вдячний за зворотнє посилання, при використанні матеріалів сайту. Powered by Rublin Team.
Post new comment