SQL Server 2016 – Backup to URL mit dem Ola Hallengren Skript

In meinem letzten Beitrag zum Thema Backup to Azure habe ich die Möglichkeiten SQL Server Backups in die Azure Cloud zu erstellen angefangen zu erläutern, hierzu möchte ich kurz einen Nachtrag bringen. Viele von euch kennen und nutzen die Backup Skripte von Ola Hallengren, auch diese bieten die Möglichkeiten eines “Backup to URL”. Hierbei gibt es auch etwas zu beachten, ich habe hier meine Tests damit ebenfalls dokumentiert.

Backup to URL mit Ola Hallengren

Wenn man sich un ganz unbedarft des Sache annimmt und – so wie ich – seine ersten Tests mit dem Azure Blob Storage und den Backup to URL macht, dann wird man leider schnell an einen Punkt kommen, wo man doch ein wenig recherchieren und nachdenken muss.  😉

Aber der Reihe nach, ich hatte einen Credential gemäß dem Powershell-Skript angelegt:

CREATE CREDENTIAL [https://backupdemostorage.blob.core.windows.net/backupdemocontainer] WITH IDENTITY='Shared Access Signature', SECRET='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Danach konnte ich einwandfrei meine Backups in den Azure Blog Storage erstellen und diese dort auch auffinden.
Files im Azure Blob Storage

Wie man aus der Dokumentation bzw Beispielen von Ola Hallengrens Backup Skripten entnehmen kann, benötigen wir zur Ausführung des OH-Backups die URL und ein Credential.
Ok, beides habe ich (siehe oben)… also eingefügt und ausgeführt…

EXECUTE dbo.DatabaseBackup
@DATABASES = 'USER_DATABASES',
@URL = 'https://backupdemostorage.blob.core.windows.net/backupdemocontainer',
@Credential = 'https://backupdemostorage.blob.core.windows.net/backupdemocontainer',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y'

Sieht zwar lustig aus, ist aber anscheinend so, wenn ich den Output aus dem Powershell-Skript verwende => URL und Credential sind identisch. Die Ausführung des obigen Backups ergibt aber leider einen Fehler 🙁

Backup to URL - Ola Hallengren NOK

Anscheinend setzt Ola Hallengren die Werte anders in den Backup Befehl ein, so dass es hier zu einem Fehler kommt. Und in der Tat, nach einigem Suchen und Lesen, bin ich dem Problem näher gekommen. Der Backup Befehl des SQL Servers kennt eine Option “Credential”, welche durch das Skript gefüllt wird.

CREDENTIAL
Used only when creating a backup to the Windows Azure Blob storage service.

Die Erläuterungen hierzu sind aber auch nicht wirklich großzügig gefüllt… aber man findet in der der MSDN unter Best Practices zum Thema “Backup to URL” weitere Hinweise. So gibt es einen Unterschied in der Anlage der Credentials bzw der Rechte-Vergabe, die mit den “Shared Access Signatures” (siehe Powershell Output) wesentlich umfangreicher bzw detaillierter möglich sind. Also muss man sich vor Anlage bzw Einrichtung einer Backup-to-URL Sicherung Gedanken machen, wie man welche Datenbanken sichern möchte bzw wohin mit welchen Rechten bzw Credentials. Microsoft empfiehlt die Credentials für ein Backup-to-URL mit folgendem Statement anzulegen.

IF NOT EXISTS  
(SELECT * FROM sys.credentials   
WHERE credential_identity = 'mycredential')  
CREATE CREDENTIAL <credential name> WITH IDENTITY = 'mystorageaccount'  
,SECRET = '<storage access key> ;

Wenn man nun diese zusätzlichen Credentials angelegt hat und im Backup-Statement hinterlegt hat, dann funktioniert auch das Ola Hallengren Backup-Skript in Richtung Azure Storage Blob.
Backup to URL Ola Hallengren

Björn arbeitet in Hamburg als Datenbank-Administrator und Head of Competence für MS SQL und mySQL. Er nimmt regelmäßig an den PASS Regionalgruppen Treffen in Hamburg, den Veranstaltungen der PASS wie SQLSaturday und SQLGrillen teil und er organisiert in Hamburg das Azure Meetup. Er interessiert sich neben den Themen rund um den SQL Server, Powershell und Azure für Science-Fiction, Snowboarden, Backen 😉 und Radfahren.

Leave a Reply

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