Hallo nochmals!
Aufgrund der Tatsache dass wir mit diesem Thema immer wieder konfrontiert sind, habe ich nun die Schritte ein wenig zusammengefasst.
Ich schreibe „ein wenig“ weil es eigentlich auf MSDN perfekt dokumentiert ist. Ich verzichte daher auch auf Screenshots.
Ausgangspunkt: Auf Azure läuft eine VM mit NAV und deren SQL Sicherung möchte ich täglich in einem Azure Storage ablegen.
hritt 1: Auf Azure ein Storage Accountanlegen. Soweit ich informiert bin kann man offiziell 30 inoffiziell bis zu 50 Storage Accounts haben, daher empfiehlt sich in meinen Augen wirklich das Anlegen eines eigenen Accounts um besser unterscheiden zu können.
Schritt 2: Innerhalb des Storage Accounts einen Container Anlegen. Das ist im Grund wie ein Verzeichnis auf einer Festplatte und unterstützt mich dabei die Dateien besser organisieren zu können. Ein Container ist verpflichtend.
http://msdn.microsoft.com/en-us/library/jj720557.aspx
ZUGRIFF
Schritt 3: Nachdem alles angelegt ist benötigt man den sekundären oder primären Zugriffschlüssel. Den findet ihr direkt im Storage Account ganz unten auf der Seite zum Anklicken.
Schritt 4: Ab geht’s zum SQL Server. Dort muss man zunächst ein Login anlegen das Zugriff auf die Datenbank und Zugriff auf den Speicher von Azure hat. Dafür ist eben der Zugriffschlüssel notwendig. Achtung, dabei ist die SQL Server Version bzw. ev. Updates nicht irrelevant. Details siehe die nachfolgenden Links.
http://msdn.microsoft.com/en-us/library/jj720554.aspx
BACKUP
Schritt 5: SQL Server Backup erzeugen. Ihr könnt diesen Code natürlich in einen SQL Server Agent Job geben. Ich hab diesen noch einfach um das Tagesdatum erweitert.
http://msdn.microsoft.com/en-us/library/jj720552.aspx
DECLARE @MyHost varchar(250)
SELECT @MyHost = (SELECT ‚https://XXXXX.blob.core.windows.net/XXXXXX/XXXXX‘ + convert(varchar(50),GetDate(),112) +‘.bak‘)
BACKUP DATABASE[XXXXXXXXX]
TO URL = @MyHost
WITH CREDENTIAL = ‚XXXXXXXX‘;
GO
AUFRÄUMEN
Schritt 6: Ältere Backups nach einigen Tagen wieder löschen
Eigentlich war es das dann auch, allerdings habe ich mir die Frage gestellt wie ich Backups nach einigen Tagen wieder löschen kann. Neben dem Sicherungskonzept ist dies auf Azure vor allem auch eine Preisefrage da die Abrechnung ja nach Nutzung erfolgt. Ein wenig Recherche und meine PowerShell Kenntnisse kam ich zu folgendem Script das einen Job im Aufgabenplaner anlegt und alle Backups die älter als 3 Tage sind direkt von Azure wieder löscht. (Ihr müsst dazu am Server die Azure Powershell Erweiterung installieren)
$taskTrigger = New-ScheduledTaskTrigger -Daily -At 04:00AM
Register-ScheduledJob -Name Delete3daysEpxBackups -Trigger $taskTrigger -ScriptBlock {
Import-AzurePublishSettingsFile C:\XXXX\XXXXXXXXX.publishsettings
Set-AzureSubscription „XXXXXXXXXXXXXXX“ -CurrentStorageAccountName „XXXXXXXX“
$isOldDate = [DateTime]::UtcNow.AddDays(-3)
Write-Host $isOldDate
Get-AzureStorageBlob -Container „XXXXXXXXX“ |
Where-Object { $_.LastModified.UtcDateTime -lt $isOldDate -and $_.BlobType -eq „PageBlob“ } |
Remove-AzureStorageBlob}
Ist also eher eher eine Zusammenfassung als eine Schritt für Schritt Anleitung, aber wie gesagt es ist eigentlich alles da und da dachte ich mir vielleicht hilft es als „Roter Faden“
LG Rene