PowerShell Kullanarak Restore Yapmak

Restore işlemlerini otomatize etmek için hem File System hemde SQL Server’ın kullanabildiği bir dil olan PowerShell’i kullanmak beraberinde yapılacak diğer işlemler içinde fazlasıyla yarar sağlamaktadır.

Örneğin bir çok database ile belirli aralıklarda restore yapılması gereken bir sistemde hem backup dosya isimleri ve sayıları hem de database file isim ve sayıları değişkenlik gösterebilir.

Bu durumda kolay manipüle edilebilen ,içerisinde değişken yapısı kurulabilen bir dil kullanım ihtiyacı doğmaktadır.

Bir Backup Dosyası , Bir Mdf ve Bir Ldf Dosyasına Sahip Bir Database İçin Restore Kodu ;

$File = Get-ChildItem Microsoft.PowerShell.Core\FileSystem::\\dbbackup\w$\Backup\DBADB\FULL |Select Name
$FilePath = "\\dbbackup\w$\Backup\DBADB\FULL\"
$RestorePath = $FilePath + $File.Name

$RelocateData = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("DBADBDATA", "F:\DATA\DBADBDATA.mdf")   
$RelocateLog = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("DBADBLOG", "T:\LOG\DBADBLOG.ldf")  

Restore-SqlDatabase -ServerInstance "SQLRSTR" -Database "DBADB" -BackupFile $RestorePath -RelocateFile @($RelocateData,$RelocateLog)

Birden Fazla (Bölünmüş) Backup Dosyası , Birden Fazla Mdf ve Ldf Dosyasına Sahip Bir Database İçin Restore Kodu ;

$File1 = Get-ChildItem Microsoft.PowerShell.Core\FileSystem::\\dbbackup\w$\Backup\DBADB\FULL |Select Name
$FilePath1 = "\\dbbackup\w$\Backup\DBADB\FULL\"
$RestorePath1 = $FilePath1 + $File1.Name

$File2 = Get-ChildItem Microsoft.PowerShell.Core\FileSystem::\\dbbackup\y$\Backup\DBADB\FULL |Select Name
$FilePath2 = "\\dbbackup\y$\Backup\DBADB\FULL\"
$RestorePath2 = $FilePath2 + $File2.Name

$RelocateData1 = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("DBADBDATA1", "F:\DATA\DBADBDATA1.mdf")  
$RelocateData2 = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("DBADBDATA2", "F:\DATA\DBADBDATA2.ndf")  
$RelocateData3 = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("DBADBDATA3", "F:\DATA\DBADBDATA3.ndf")  
$RelocateData4 = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("DBADBDATA4", "F:\DATA\DBADBDATA4.ndf")  
$RelocateLog1 = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("DBADBLOG1", "T:\LOG\DBADBLOG1.ldf")  
$RelocateLog2 = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("DBADBLOG2", "T:\LOG\DBADBLOG2.ldf")

Restore-SqlDatabase -ServerInstance "SQLRSTR" -Database "DBADB" -BackupFile @($RestorePath1,$RestorePath2) -RelocateFile @($RelocateData1,$RelocateData2,$RelocateData3,$RelocateData4,$RelocateLog1,$RelocateLog2)

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s