-
Notifications
You must be signed in to change notification settings - Fork 63
/
Copy pathDatabaseBackup.ps1
47 lines (34 loc) · 1.72 KB
/
DatabaseBackup.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum") | Out-Null
$a = Get-Date
$b = "dbName" + $a.Day + "-" + $a.Month + "-" + $a.Year + ".bak.zip"
Remove-Item \\dataserver\folder\dbName.bak
$server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") ("dataserver")
$dbBackup = new-Object ("Microsoft.SqlServer.Management.Smo.Backup")
$dbRestore = new-object ("Microsoft.SqlServer.Management.Smo.Restore")
$dbBackup.Database = "dbName"
$dbBackup.Devices.AddDevice("C:\folder\dbName.bak", "File")
$dbBackup.Action="Database"
$dbBackup.Initialize = $TRUE
$dbBackup.SqlBackup($server)
if(!(Test-Path \\dataserver\folder\dbName.bak)){
$smtp = new-object Net.Mail.SmtpClient("emailserver")
$smtp.Send("from", "to", "Backups not working", "Action required immediately for Full Backup")
Exit
}
$dbRestore.Devices.AddDevice("C:\folder\dbName.bak", "File")
if (!($dbRestore.SqlVerify($server))){
$smtp = new-object Net.Mail.SmtpClient("emailserver")
$smtp.Send("from", "to", "Backups not valid", "Action required immediately for Full Backup")
Exit
}
Copy-Item \\dataserver\folder\dbName.bak C:\Data\dbName.bak
Write-Zip C:\Data\dbName.bak -OutputPath C:\Archives\$b
$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri("FTP-server-site")
$webclient.UploadFile($uri, $location)
$c = Get-Date -format t
$smtp = new-object Net.Mail.SmtpClient("emailserver")
$smtp.Send("from", "to", "Database Backup Finish Time", $c)