#************************************************************** #* Copyright 2018 Ali Corporation, All Rights Reserved #************************************************************** #Change following values according to the configuration of your environment. $SqlServer = "localhost" $SqlDatabase = "mydb" $backupDir = "C:\backup" Write-Host "[INFO] Start Backup-SQL-Database" Write-Host "[INFO] Server: $SqlServer" Write-Host "[INFO] Database: $SqlDatabase" #Load SMO assemblies [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")| Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended")| Out-Null #Set backup configurations $server = New-Object -Type Microsoft.SqlServer.Management.Smo.Server -Argumentlist $SqlServer $backupDate = Get-Date -Format yyyyMMdd-HHmmss $backupFile = "$($backupDir)\$($SqlDatabase)-$($backupDate).bak" $smoBackup = New-Object Microsoft.SqlServer.Management.Smo.Backup $smoBackup.Action = [Microsoft.SqlServer.Management.Smo.BackupActionType]::Database $smoBackup.BackupSetDescription = "Full backup of $($SqlDatabase)" $smoBackup.BackupSetName = "$($SqlDatabase) Backup" $smoBackup.Database = $SqlDatabase $smoBackup.MediaDescription = "Disk" $smoBackup.CompressionOption = "1" $smoBackup.PercentCompleteNotification = "10" $percentEventHandler = [Microsoft.SqlServer.Management.Smo.PercentCompleteEventHandler] { Write-Host "[INFO] Executing $($_.Percent)%" } $completedEventHandler = [Microsoft.SqlServer.Management.Common.ServerMessageEventHandler] { Write-Host "[INFO] Backup of database $SqlDatabase to $backupFile completed" } $smoBackup.add_PercentComplete($percentEventHandler) $smoBackup.add_Complete($completedEventHandler) $smoBackup.Devices.AddDevice($backupFile,"File") #Backup Write-Host "[INFO] Starting backup of $SqlDatabase" $smoBackup.SqlBackup($server) Write-Host "[DONE]" -ForegroundColor White -BackgroundColor Green Write-Host ""