Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

213 lines
5.3 KiB

' Script: createBackupSched.vbs
' Description: Implements backup schedule for UDDI database
' Author: L. Roger Doherty ([email protected])
' Date: 10/11/00
' Changes:
' 11-13-2000: lrdohert - added WITH INIT option to backup jobs as per bug 712
Option Explicit
Dim oXML
Dim oSQLServer, oBackupDevice, oJobServer, oJob, oJobSchedule, oJobStep
Dim strServer, strDatabase, strBackupDir
Dim strDbBackupDevName, strDbJobName, strBaseLogBackupDevName, strBaseLogJobName
Dim dtNow
strDbBackupDevName = "UDDI_DB_BACKUP_DEV"
strDbJobName = "UDDI_DB_BACKUP_JOB"
strBaseLogBackupDevName = "UDDI_LOG_BACKUP_DEV"
strBaseLogJobName = "UDDI_LOG_BACKUP_JOB"
WScript.Echo "Starting createBackupSched.vbs exection....."
Err.Clear
If WScript.arguments.Count <> 3 Then
WScript.Echo "Msg: Invalid number of arguments passed."
WScript.Quit
End If
strServer = WScript.Arguments(0)
strDatabase = WScript.Arguments(1)
strBackupDir = WScript.Arguments(2)
' Connect to SQL Server
Set oSQLServer = CreateObject("SQLDMO.SQLServer2")
With oSQLServer
.LoginSecure = True
.Connect strServer
End With
' Delete old backup devices
For Each oBackupDevice In oSQLServer.BackupDevices
If oBackupDevice.Name = strDbBackupDevName Then
oBackupDevice.Remove
End If
Next
' Create new database backup device
Set oBackupDevice = CreateObject("SQLDMO.BackupDevice")
With oBackupDevice
.Name = strDbBackupDevName
.Type = 2 ' SQLDMO_Device_DiskDump
.PhysicalLocation = strBackupDir + "\" + strDbBackupDevName + ".bak"
End With
oSQLServer.BackupDevices.Add(oBackupDevice)
' Create transaction log backup devices
CreateLogDumpDevices strBackupDir, strBaseLogBackupDevName, 23
'
' Connect to SQL Agent
'
Set oJobServer = oSQLServer.JobServer
' Check to see if SQL Agent is running
If oJobServer.Status <> 1 Then
WScript.Echo "Msg: SQL Agent is not running. Cannot create backup schedule."
WScript.Quit
End If
' Delete old jobs if they exist
For Each oJob In oJobServer.Jobs
If oJob.Name = strDbJobName Then
oJob.Remove
End If
Next
' Create new Database Backup Job
Set oJob = CreateObject("SQLDMO.Job")
With oJob
.Name = strDbJobName
End With
oJobServer.Jobs.Add(oJob)
Set oJob=oJobServer.Jobs(strDbJobName)
Set oJobSchedule = CreateObject("SQLDMO.JobSchedule")
dtNow = Now()
With oJobSchedule
.Name = "Daily"
.Schedule.ActiveStartDate=(DatePart("yyyy",dtNow) * 10000) + (DatePart("m",dtNow) * 100) + DatePart("d",dtNow)
.Schedule.ActiveStartTimeOfDay=000000
.Schedule.FrequencyType=4 ' SQLDMOFreq_Daily
.Schedule.FrequencyInterval=1
End With
oJob.JobSchedules.Add(oJobSchedule)
Set oJobStep = CreateObject("SQLDMO.JobStep")
With oJobStep
.Name="BACKUP DATABASE"
.Command="BACKUP DATABASE " + strDatabase + " TO " + strDbBackupDevName + " WITH INIT"
.StepID=1
End With
oJob.JobSteps.Add(oJobStep)
oJob.ApplyToTargetServer "(local)"
' Create the backup log jobs
CreateLogBackupJobs strDatabase, strBaseLogJobName, strBaseLogBackupDevName, 23
' Run the database backup job
Set oJob = oJobServer.Jobs(strDbJobName)
oJob.Invoke
WScript.Echo "Ending createBackupSched.vbs exection......"
Sub CreateLogDumpDevices(strBackupDir, strBaseName, intNumLogs)
Dim i
Dim strI
For i = 1 to intNumLogs
If Len(CStr(i)) = 1 Then
strI = "0" + CStr(i)
Else
strI = Cstr(i)
End If
' Delete backup device if it exists
For Each oBackupDevice In oSQLServer.BackupDevices
If oBackupDevice.Name = (strBaseName + "_" + strI) Then
oBackupDevice.Remove
End If
Next
Set oBackupDevice = CreateObject("SQLDMO.BackupDevice")
With oBackupDevice
.Name = strBaseName + "_" + strI
.Type = 2 ' SQLDMO_Device_DiskDump
.PhysicalLocation = strBackupDir + "\" + strBaseName + "_" + strI + ".bak"
End With
oSQLServer.BackupDevices.Add(oBackupDevice)
Next
End Sub
Sub CreateLogBackupJobs(strDatabase, strBaseJobName, strBaseDevName, intNumJobs)
Dim i
Dim strJobName, strDevName
Dim dtNow
For i = 1 to intNumJobs
If Len(CStr(i)) = 1 Then
strJobName = strBaseJobName + "_0" + CStr(i)
strDevName = strBaseDevName + "_0" + CStr(i)
Else
strJobName = strBaseJobName + "_" + CStr(i)
strDevName = strBaseDevName + "_" + CStr(i)
End If
' Delete old jobs if they exist
For Each oJob In oJobServer.Jobs
If oJob.Name = strJobName Then
oJob.Remove
End If
Next
' Create new Log Backup Job
Set oJob = CreateObject("SQLDMO.Job")
With oJob
.Name = strJobName
End With
oJobServer.Jobs.Add(oJob)
Set oJob=oJobServer.Jobs(strJobName)
Set oJobSchedule = CreateObject("SQLDMO.JobSchedule")
dtNow = Now()
With oJobSchedule
.Name = "Daily"
.Schedule.ActiveStartDate=(DatePart("yyyy",dtNow) * 10000) + (DatePart("m",dtNow) * 100) + DatePart("d",dtNow)
.Schedule.ActiveStartTimeOfDay=(i * 10000)
.Schedule.FrequencyType=4 ' SQLDMOFreq_Daily
.Schedule.FrequencyInterval=1
End With
oJob.JobSchedules.Add(oJobSchedule)
Set oJobStep = CreateObject("SQLDMO.JobStep")
With oJobStep
.Name=strDevName
.Command="BACKUP LOG " + strDatabase + " TO " + strDevName + " WITH INIT"
.StepID=1
End With
oJob.JobSteps.Add(oJobStep)
oJob.ApplyToTargetServer "(local)"
Next
End Sub