Wie mit Azure starten – interessante Einstiegsmöglichkeiten

Heute kam hier die Frage von einem Kollegen auf, nach wie kann ich mich wo informieren, womit sollte ich anfangen, wenn ich mich zukünftig mit Azure auseinandersetzen möchte/soll/muss. Da ich ihm dazu einen nicht allzu kurzen Text geschrieben habe, dachte ich mir, dass das für meine Blog-Leser auch interessant sein könnte und möchte den Text hier in einer etwas ausführlicheren Form veröffentlichen. 😉

Erstmal muss man sich über die Fülle an Möglichkeiten Gedanken machen, was es da nicht alles für verschiedene Produkte, Services, Plattformen, Hersteller, Anbieter und vielem mehr gibt… Also was möchte/soll man machen… meist kommt man ja mit einer Public Cloud aus geschäftlichen Gründen in Berührung, wie bei meinem Kollegen. Beispielsweise der Web-Entwickler, der wird sich eher damit beschäftigen mit welchen Services in welcher Ausprägung und vor allem wie seine Webseite/-Applikation dem Kunden/Anwender zur Verfügung stellen kann. Der Business-Intelligence (BI) Berater wird sich vielleicht eher mit den Möglichkeiten einer Dynamics-Umgebung und wie er diese Daten worüber wohin wie am Besten dem Management präsentieren kann.

Nehmen wir meinen Kollegen, der bisher sich mit dem SQL Server in allen Ausprägungen und Fazetten on-premise beschäftigt hat… der fragte mich:

Hallo Björn,
[...]
wollte bei Dir mal nachfragen
was für Literatur / Links Du mir
zum Thema MSSQL und Azure empfehlen kannst
[...]

Azure ist einfach sehr vielfältig 😉

In diesem Fall kann man natürlich erst einmal eingrenzen, dass er sich mit Datenbanken beschäftigen möchte und zwar in der Hauptsache mit der Azure SQL Database und vielleicht noch dem Azure SQL Datawarehouse, sowie allen notwendigen Services wie zum Beispiel Netzwerke. Hier muss jeder für sich entscheiden, welcher Lerntyp er ist… erst lesen/anschauen und dann machen oder erst einmal durch ausprobieren wie weit man ohne Hilfe kommt, um dann nachzulesen. Ich bin eher der Typ ausprobieren und dann lesen, wobei bei neuen Haushaltsgeräten… 😉
Ich schätze meinen Kollegen eher als den “Ausprobierer” ein…

Idealerweise fängt man klein an bzw dort an, was man unter Umständen schon von seiner bisherigen Tätigkeit kennt. Also hier eine einfache virtuelle Maschine mit Windows Server und einem SQL Server… diese kann man erst einmal über ein Tutorial aus der Microsoft-Dokumentation erstellen, entweder über das Azure-Portal oder mittels Powershell. Hierzu stellt Microsoft bzw die Community entsprechende Dokumentationen (Schritt-für-Schritt-Anweisungen) zur Verfügung, anhand derer man sehr einfach die ersten Erfolge sehen kann.

Beispielsweise => Bereitstellen eines virtuellen Windows-Computers mit SQL Server im Azure-Portal

Praktischer Start mit Azure

Wenn man aber nun – wie oben vorgeschlagen – mit der praktischen Arbeit beginnen möchte, wird man schnell feststellen, dass man einen Account für Azure benötigt… dies geht für die ersten privaten Gehversuche am einfachsten mit einem kostenfreien Azure-Account. Diesen kann man sich ganz schnell selber erstellen und erhält darüber hinaus auch noch viele kostengünstige Angebote für Azure Services und teilweise sogar bestimmte Services dauerhaft kostenfrei. So kann man die ersten Übungen bzw das gerade gelernte selber – ohne großes Risiko – ausprobieren und antesten.

So stellt Microsoft zum Beispiel – über diesen “Free-Account” – jedem Nutzer eine Azure SQL Database, virtuelle Windows und Linux-Maschinen oder auch eine Azure Cosmos DB für die ersten 12 Monate kostenfrei zur Verfügung! Weitere Services wie Azure Data Factory, der Azure Kubernetes Service oder Cognitive Services sind in begrenztem Umfang dauerhaft kostenfrei verfügbar. Reinschauen lohnt sich auf jeden Fall !!!

Vertiefung des Azure KnowHows

Wenn man dann seine erste Maschine deployed hat und auch schon ein wenig in der Dokumentation gestöbert hat, so kann man sich später über das vielfältige Service-Angebot von Microsoft informieren, in dem man sich die kostenfreie Schulungen auf Microsoft Learn anschaut! Hier kann man sich die entsprechenden Produkte bzw Lernziele aussuchen und einfach loslegen…

Videos, Dokumentationen, Schritt-für-Schritt-Anleitungen und Demos / Labs bringen einem die Produkte sowie Services theoretisch näher. So erhält man einen ersten Einblick in die Vorgehensweise und Möglichkeiten der Microsoft Public Cloud Azure. Im Endeffekt hilft aber nichts anderes als wirklich ausprobieren und zu testen, hierzu müsste man sich dann entweder selber oder mit dem Kunden entsprechende Test-Szenarien überlegen und testen, testen, testen…

Auch in der Public Cloud bleiben die alten “Weisheiten” meist gültig, auch wenn man gewissen alte Denkstrukturen überwinden muss und auf den ersten Blick vieles unübersichtlich und teuer wirkt! Hier heißt es dann weiter bzw um die Ecke denken, um dem Kunden entsprechende Angebote und Solutions präsentieren zu können. Aber für einen ersten Einstieg sind die oben genannten Plattformen auf jeden Fall sehr hilfreich!

Viel Spaß beim Lernen und Ausprobieren!

Housekeeping einer Azure SQL DB Managed Instance

Ich habe mich heute etwas intensiver mit der “neuen” Azure SQL Database – Managed Instance beschäftigt und dabei ging es auch um das Housekeeping, welches man in regelmäßigen Abständen auf allen SQL Servern durchführen sollte. Überlicherweise nehme ich hierfür die Skripte von Ola Hallengren, welche in regelmäßigen Abständen aktualisiert und erweitert werden. Aufgrund der weit verbreiteten, weltweiten Nutzung kann man hier auch davon ausgehen, dass die Funktionalität und Stabilität absolut produktionswürdig ist und können daher ohne Bedenken auch in Produktionsumgebungen eingesetzt werden.

Für einen Workshop und natürlich aus eigenem Interesse habe ich einen einfachen Weg gesucht, wie ich das Housekeeping in einer Managed Instance realisieren kann, daher habe ich einfach nur das normale Skript von der Webseite runtergeladen und in das SQL Management Studio eingefügt. Kurz überprüft, ob die Einstellungen in dem Skript valide sind und ausgeführt.

Zu meinem Erstaunen lief das Skript ohne Probleme einfach durch und meldete eine erfolgreiche Ausführung, ein kurzer Blick in die SQL Server Agent Jobs brachte die nächste Überraschung da die zu erstellenden Jobs auch tatsächlich vorhanden waren. Ok, die Backup-Jobs fehlten, aber darum brauche ich mich in einer Managed Instance nicht zu kümmern, da dies automatisch erfolgt.

Managed Instance - Housekeeping - Ola Hallengren - SQL Server Agent Jobs

Als ich jetzt auch noch die Jobs nacheinander gestartet hatte und diese alle einwandfrei durchliefen, war ich nahezu platt. Also ich kann die Ola Hallengren Housekeeping Jobs nur empfehlen, sowohl onprem, als auch in irgendeiner virtuellen Maschine oder eben in der Azure SQL Database Managed Instance! Beim Schreiben dieses Beitrages habe nocheinmal direkt in das Skript geschaut, ob es irgendeine “Magic” gibt, die dafür sorgt, dass die Backup-Jobs nicht angelegt werden und tatsächlich hat Ola hier großartige Arbeit geleistet. Wenn man sich dann auch die Dokumentation auf der Webseite anschaut, wird man feststellen, dass er tatsächlich auch auflistet, dass die Managed Instance offiziell unterstützt wird.

Also worauf wartet ihr, nutzt die Ola Hallengren Housekeeping Jobs (aka Maintenance Jobs) auch für eure SQL Server!

SQLDays 2018 in München

Dieses Jahr war ich erstmalig auf den SQLDays in München genauergesagt in Erding (Erdinger Stadthalle), bei den SQLDays handelt es sich um eine Schulungs-Veranstaltung der ppedv. In den zwei bzw vier Tagen geht es vor allem um die namensgebende Microsoft-DataPlatform Umgebung rund um den SQL Server, an zwei Workshop-Tagen und zwei Konferenz-Tagen können die Teilnehmer aus einer Vielzahl von interessanten Sessions von hochrangigen Sprechern auswählen. Zum Beispiel hielt Georg Urban die Keynote und Markus Raatz hielte folgenden Vortrag:

Markus Raatz : Echtzeitdatensets in Power BI: Einführung und HowTo

Von Echtzeit-Daten, wie sie meist im Streaming-Verfahren von IoT-Datenquellen geliefert werden, geht ein großer Reiz aus. Nichts ist schöner, als auf ein Browserfenster zu starren und zu sehen, wie sich der winzige Lieferwagen von allein Meter um Meter auf mein Haus zubewegt! Auch Dashboards, in denen Liniengrafiken auf- und abwärts zucken, können uns stundenlang beschäftigen. Der technische Hintergrund dazu sind Power BI Streaming Datasets, deren Möglichkeiten wir uns in diesem demo-reichen Vortrag einmal ansehen werden. Was sind mögliche Visualisierungen, welche Datenquellen bieten sich an und welche Beschränkungen der Technologie gibt es?

Aber auch die Sponsoren liessen es sich nicht nehmen ihr Wissen zu verbreiten, hier ist Andreas Heberger von Amazon mit seinem Vortrag zu nennen:

Orange Is The New Blue – Warum Amazon Web Services eine gute Wahl für Ihre Microsoft SQL Workloads ist

Wir zeigen Ihnen welche Möglichkeiten die AWS Plattform bietet, Ihre Microsoft SQL Workloads performant, flexibel und kosteneffizient in der Cloud zu betreiben. Desweiteren bietet AWS Möglichkeiten den administrativen Aufwand zu verringern, damit Sie sich wieder auf Kernaufgaben konzentrieren können. Dabei beleuchten wir die Vor – und Nachteile der einzelnen Varianten, von der klassischen Installation auf IaaS VMs, dem AWS managed Service (RDS) sowie Migrationsstrategien. Darüber hinaus wollen wir Wege aufzeigen wie vorhandene Lizenzinvestments weiterverwendet werden können, und wie Sie mithilfe von AWS sogar Ihre Lizenzkosten verringern können.

Neben den genannten waren viele nationale und europäische Sprecher auf den SQLDays und trugen so zu einem ordentlichen Wissenstransfer bei!

Mein Vortrag zu Azure SQL Database konnte ein wenig auf dem zeitlich früheren Vortrag von Greogor Reimling aufbauen, der den Teilnehmern etwas über die Azure Managed Instance erzählte.

Gregor Reimling - SQLDays 2018 - Azure SQL Managed Instance

Kurz vor der Mittagspause stand ich dann im großen Saal und durfte den interessierten Teilnehmern etwas zu Azure SQL Database und deren Administration mit Powershell näher bringen, für alle die an meinem Vortrag teilgenommen haben, hier auch noch einmal ein Hinweis wegen der gescheiterten Demo => hier ist der Nachtrag bzw die Korrektur

Die Organisation der Veranstaltung war sehr gut, Teilnehmer und Sprecher der SQLDays wurden sehr gut versorgt, man musste sich um nichts Gedanken machen, egal ob Getränke und Snacks zwischen den Sessions oder Mittagessen oder während der gemeinsamen Abendveranstaltung! Ausreichend Getränke und super-leckeres Essen sorgten für eine angenehme Atmosphäre und motivierte Mitwirkende!

Bjoern Peters - Azure SQL Database - SQLDays 2018

Natürlich habe ich auch im Rahmen meiner Anwesenheit (ich war nur den Dienstag auf den SQLDays) auch mehreren Sessions gelauscht, wie zum Beispiel Andre Essing:

The joy of analytics – Lassen Sie uns zusammen ein Data Warehouse in die Cloud malen

Es gibt eine Menge Wege und Möglichkeiten Mehrwerte aus seinen Daten zu ziehen. Seit Jahren machen wir das mit den gleichen Techniken in unseren “klassischen” Data Warehouse Umgebungen. Aber die Welt ist im steten Wandel und so auch die Daten. Wo die Daten vor ein paar Jahren noch ausschließlich strukturiert waren, wächst die Zahl von schemalosen Datentypen ins unermessliche, und eine Ende ist nicht in Sicht. Wir kämpfen mit Daten, bei denen sich ständig das Schemata ändert und versuchen Mehrwerte aus neuen Datentypen wie Soziale Medien, Videos und Bildern zu ziehen. In dieser Whiteboard Session möchte ich mit Ihnen über moderne Wege sprechen, Ihre Daten zu speichern, zu analysieren und zu visualisieren. Zusammen zeichnen wir ein Modern Data Warehouse, schauen uns an welche Möglichkeiten sich bieten verschiedenste Daten zu analysieren und warum uns die Cloud hier hilft. Besuchen Sie meinen Vortrag und zeichnen Sie mit mir zusammen ein modernes Data Warehouse.

Andre Essing - SQLDays 2018

Es hat auf jeden Fall sehr viel Spaß gemacht und es war meine erste Teilnahme an den SQLDays, die meine Münchener Kollegen immer wieder als großartige Veranstaltung erwähnt haben, daher erfüllt es mich auch ein wenig mit Stolz dort als Sprecher dabei sein zu dürfen. Vielleicht klappt es ja auch im nächsten Jahr wieder mit einem spannenden exklusiven Vortrag für die SQLDays 2019 in Erding. Termin steht schon 😉

SQLDays 2019 – Save the date: 14.-17. Okt. 2019 München

Weitere Informationen findet ihr auf der Homepage der SQLDays…

SQLDays 2018 in München – Nachtrag – Pause aka Restore

Im Rahmen meines Vortrages auf den SQLDays in München hatte ich versucht einen Workaround zu “Wie spare ich Geld? Ich droppe einfach die Datenbank!”… hierzu möchte ich gerne ein Update posten.
Aber der Reihe nach, denn erst einmal möchte ich mich recht herzlich bei der ppedv Event bedanken für die Einladung nach München, zum anderen bei den zahlreichen Teilnehmern, die meine Session besucht haben! Ich hoffe ihr habt alle etwas aus meiner Session mitgenommen und könnt diese Ideen und Anregungen in eurem Alltag umsetzen bzw integrieren.

Unsplash - Photo by kevin Xue - THANK YOU

Powershell – Workaround um Kosten zu sparen

In meiner Demo ist das Wiederherstellen nach dem “Drop Database” leider fehlgeschlagen, so dass ich in meiner Demo nicht zeigen konnte wie man aus dem logischen SQL Server das gespeicherte “Last Deleted Database” entnehmen kann, um daraus einen Restore zu erzeugen. Ich habe diese Code-Zeilen bisher immer nur einmal ausgeführt, also Demo-Umgebung frisch aufsetzen, die Skripte nur auf Syntax überprüfen und hoffen das alles gut geht 😉 Dieses mal hatte ich meine Skripte eben doch einmal vorher ausgeführt, dadurch entstand schon ein Eintrag für “DeletedDatabases”… und somit gab es eben mehr als einen Eintrag und der Restore wußte nicht auf welches Datum er zurück gehen sollte…

# Do not continue until the cmdlet returns information about the deleted database.
if(![string]::IsNullOrEmpty($deleteddatabase)) {
Write-Host "Now restoring database $databasename_backup ..." -foregroundcolor "DarkYellow"
Restore-AzureRmSqlDatabase -FromDeletedDatabaseBackup `
-ResourceGroupName $resourcegroupname `
-ServerName $servername_backup `
-TargetDatabaseName $databasename_backup `
-ResourceId $deleteddatabase.ResourceID `
-DeletionDate $deleteddatabase.DeletionDate `
-Edition "Standard" `
-ServiceObjectiveName "S0"
}

Bin ich so bisher noch gar nicht drüber gestolpert, aber als ich dann nach der Session das Skript und den Output mir noch einmal angesehen habe…

SQLDays AzureSQLDB DeletedDatabases - Scriptproblem

Ich könnte mir vorstellen, dass es noch eine sichere oder sinnvollere Lösung gibt, aber als Ansatz bzw vorübergehende Lösung kann man das erst einmal so machen 😉
Es gibt zumindest zwei Möglichkeiten…

Möglichkeit 1

Aus meiner Sicht am einfachsten, aber unter Umständen nicht sicher, dass tatsächlich das Datum des letzten Löschvorganges übernommen wird, da das Skript zuvor keinen Einfluss auf die Sortierung der Ergebnisse nimmt.

# Do not continue until the cmdlet returns information about the deleted database.
if(![string]::IsNullOrEmpty($deleteddatabase)) {
Write-Host "Now restoring database $databasename_backup ..." -foregroundcolor "DarkYellow"
Restore-AzureRmSqlDatabase -FromDeletedDatabaseBackup `
-ResourceGroupName $resourcegroupname `
-ServerName $servername_backup `
-TargetDatabaseName $databasename_backup `
-ResourceId $deleteddatabase[0].ResourceID `
-DeletionDate $deleteddatabase[0].DeletionDate `
-Edition "Standard" `
-ServiceObjectiveName "S0"
}

Syntaktisches korrekt, funktioniert auf jeden Fall, ABER eben keine 100%ige Gewissheit, dass auch tatsächlich der gewünschte Zeitpunkt ausgewählt wird.

Möglichkeit 2

Etwas “umständlicher”, aber auf jeden Fall sicherer, denn wir wählen explizit das zu letzt hinzugefügte Datum aus.

# Do not continue until the cmdlet returns information about the deleted database.
if(![string]::IsNullOrEmpty($deleteddatabase)) {
Write-Host "Now restoring database $databasename_backup ..." -foregroundcolor "DarkYellow"
Restore-AzureRmSqlDatabase -FromDeletedDatabaseBackup `
-ResourceGroupName $resourcegroupname `
-ServerName $servername_backup `
-TargetDatabaseName $databasename_backup `
-ResourceId ($deleteddatabase.ResourceID | Select-Object -Last 1) `
-DeletionDate ($deleteddatabase.DeletionDate | Select-Object -Last 1) `
-Edition "Standard" `
-ServiceObjectiveName "S0"
}

Syntaktisches korrekt, funktioniert auf jeden Fall, ABER eben keine 100%ige Gewissheit, dass auch tatsächlich der gewünschte Zeitpunkt ausgewählt wird.

SQLDays-AzureSQLDB-DeletedDatabases-Script-optimized

Nun kann ich auch die SQLDays 2018 in München auf jeden Fall als Erfolg verbuchen, da ich wieder etwas an meinen Demos optimieren konnte und den Teilnehmern doch noch zeigen kann, wie dieses Skript funktioniert. In den nächsten Tage werde ich meine Demo-Skripte auf Github entsprechend aktualisieren, damit jeder davon profitieren kann!

Hier findet Ihr/sie nicht nur meine Skripte sondern auch meine Slides als PDF.

Skripte und Slides zu den SQLDays 2018 von SQL_aus_HH auf Github

Azure SQL Database – Hyperscale – jetzt im Public Preview

Auf der #MSIgnite wurde ein neues Feature bzw eine neue Variante von Azure SQL Database vorgestellt : Hyperscale!

Mit diesem neuen Produkt bietet Microsoft seinen Kunden eine Datenbank-Engine, welche schneller und flexibler auf plötzliche Daten-Wachstumsraten reagieren kann als die bisherigen. Mit Hyperscale kommen bisher bei on-premise SQL Servern unbekannte Technologien zum Einsatz, da diese sich erst realisieren ließen durch die Cloud-typische Trennung von Services, Netzwerk und Storage. Durch eben diese Trennung können neue Ansätz realisiert werden, welche – wie bei Azure SQLDB Hyperscale – neue Prozessstrukturen ermöglichen, hier wird nicht direkt in das Transaction-Log in einem Storage geschrieben, sondern erst einmal in einen Log-Services ähnlichem einer Queue im Servicebus. Dieser LogService übernimmt dann sozusagen die Verteilung der Daten in Richtung Storage, Secondary ComputeNodes und Page Servers.

Der Log-Service – Drehscheibe

AzureSQLDB Hyperscale PublicPreview - LogService

Der Log Service kümmert sich um die Datensicherheit, er ist dafür verantwortlich, dass die Daten sowohl für die Log-Sicherung also das Point-in-Time-Restore zur Verfügung stehen, als auch für die weitere Speicherung in den Compute Nodes sowie den Page Servern, aber wie im Detail…
Der Dateneingang auf dem Primary ComputeNode speichert jegliche Daten erst einmal auf einem Azure Premium Storage Device (welches schon dem Log-Service unterliegt), somit ist eine schnelle und sichere Speicherung der Daten sichergestellt. Der Log-Service nimmt diese Daten und verteilt sie dann an die Logsicherung (LTR & PiTR) und die weiteren ComputeNodes (some kind of LogShipping) und eben auch an die PageServer, welche die eigentliche Datenspeicherung übernehmen.

Der Datenspeicher – Page Server

AzureSQLDB Hyperscale PublicPreview - PageServers

Die Page Server übernehmen die Daten vom Log-Service um diese dann über spezielle Caching-Speicher auf lokale SSD-Platte zu speichern bzw später dann auf dem “normalen” Azure Storage endgültig zu persitieren. Die PageServer sind im Grunde nichts anderes als die alt bekannten Datafiles auf einem on-premise SQL Server, denn auch die Datenbereitstellung in einer Hyperscale-Umgebung erfolgt über diese Page-Server, diese speichern nicht nur die Daten sondern stellen sie auch wieder zur Verfügung. Im Falle eines plötzlichen Datenwachstums können diese Page-Server sehr schnell und effizient skaliert werden, so dass zügig ein Vielfaches an Speicherplatz zur Verfügung gestellt werden kann.

Fazit – Azure SQL Database Hyperscale

Die Kombination und Trennung der einzelnen Funktionen machen einen sehr performanten Eindruck und lassen hoffen, dass sich diese Produkt am Markt etabliert. Auf jeden Fall ermöglicht es endlich Datenspeicherungen in der Cloud von mehr als 4-8 TB, welche bisher bei AzureSQLDB als Grenze galten. Manche Kunden bzw Solutions kommen eben leider nicht mit diesem “geringen” Datenmengen aus… aber gerade die Trennung der Funktionen ermöglichen ein schnelles und flexibles Skalieren der Lösung, ob im Storage-Bereich oder bei den eigentlichen Compute-Nodes. So kann man mittels Hyperscale sehr flexibel und schnell auf wechselnde Anforderungen reagieren und entsprechend seine Datenbank-Umgebung anpassen und auch nur im Ansatz an Performance zu verlieren, da alle Funktionen von einander getrennt sind. Man kann die Speicherkapazitäten ohne Downtime variabel gestalten aber auch die Read-Compute-Nodes in Menge oder Größe varieren, so dass man z.B. auf einen Käuferansturm (mehr Lese-Operationen) schnell reagieren kann.

 

Mehr Informationen zu diesem neuen Public Preview und der Roadmap findet ihr wie immer im Microsoft Blog und den Dokumentationen.

https://azure.microsoft.com/en-us/blog/tag/azure-sql-database/

Dokumentation – Azure SQL Database

Beitragsfoto von Jon Tyson über Unsplash