SQL Server – PowerShell Auto Full Backup Alma İşlemi

PowerShell Scripti ile Full Backup nasıl alabiliriz sorusuna hazırladığımız basit bir PS query si ile nasıl alındığını görelim ;

İlk etapta PowerShell ISE üzerinde Scriptimizi yazıp Backup alacağımız Folder içerisine kaydediyoruz.

 

$SQLInstance = "SQLTURKIYE"
$BackupFolder = "E:\sqltr-PS-Backup\"
 
$timeStamp = Get-Date -format yyyy_MM_dd_HHmmss 
 
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
 
$srv = New-Object ("Microsoft.SqlServer.Management.Smo.Server") $SQLInstance
$dbs = New-Object Microsoft.SqlServer.Management.Smo.Database 
$dbs = $srv.Databases 
 
foreach ($Database in $dbs) 
{ 
 $Database.name 
 $bk = New-Object ("Microsoft.SqlServer.Management.Smo.Backup") 
 $bk.Action = [Microsoft.SqlServer.Management.Smo.BackupActionType]::Database 
 $bk.BackupSetName = $Database.Name + "_backup_" + $timeStamp
 $bk.Database = $Database.Name 
 $bk.CompressionOption = 1 
 $bk.MediaDescription = "Disk"
 $bk.Devices.AddDevice($BackupFolder + "\" + $Database.Name + "_" + $timeStamp + ".bak", "File") 
  
TRY {
 $bk.SqlBackup($srv)
 } 
CATCH 
 {
 $Database.Name + " backup failed."
 $_.Exception.Message
 } 
}

Şimdide PowerShell üzerinden code umuzu EXEC edelim.

E:\sqltr-PS-Backup> .\PS_Auto_Full_Backup.ps1

Folder ımızı kontrol ediyoruz.

Klasörümüzün içerisinde SQLTURKIYE Instance ımızda yer alan DB lerin Backup ları alındığını görmekteyiz.

$SQLInstance = Instance bilgimizi giriyoruz.  Bunu dışardan parametre alınacak hale de çevirebiliriz.

$BackupFolder = Backup alacağımız Path bilgimizi giriyoruz.Bunu da dışardan parametre alınacak hale de çevirebiliriz.

 

Diğer PS Fonksiyonlarını başka makalede anlatacağım.

NOT : Bu Code unuzu JOb a bağlayıp periyodik çalıştırabilirsiniz.

 

Kolay Gelsin.

 

Leave a Reply

Your email address will not be published. Required fields are marked *