SQLSaturday #772 – München – wieder 3 PreCons, 27 Sessions, 29 Sprecher

Am kommenden Freitag, den 26. Oktober 2018 ist es endlich wieder einmal so weit… es gibt einen weiteren SQLSaturday in München!!!

In 2017 gab es leider keinen SQLSaturday in München, da sich aufgrund privater Umorientierungen kein Organisations-Team gefunden hat… auch dieses Jahr wurde es schwierig, aber man hat es in einer starken Gemeinschaftsleistung geschafft => Community eben 😉

Somit trifft sich die deutsche (und umliegende) PASS-Community am nächsten Wochenende (26.+27.10.2018) bei Microsoft in München, um sich mal wieder einen ganzen Tag über die aktuellsten Themen rund um die Microsoft Data-Plattform zu unterhalten. Eine Vielzahl an spannenden Themen von erfahrenen Sprechern mit viel Know-How informieren euch über Vereinfachung der DBA-Tätigkeiten mit Powershell, Power BI Deployment Strategien, ganz viel Azure SQL Database (im Allgemeinen, als Managed Instance und über die Migration) und nicht zu vergessen, dass unvergessliche NerdyCorn-Quiz von Ben Weissman!

Informiert euch auf der Event-Seite über den ganzen Zeitplan, wann es welche Session von welchem Sprecher in welchem Raum gibt => SQLSaturday #772 München 2018 Schedule

Ich hoffe wir werden uns dort sehen !!!

SQLSaturday #772 - Part of Schedule - Munich 2018

Allgemeines zum SQLSaturday

Ich war einfach frech und habe die englische Beschreibung von der Event-Seite kopiert 😉

SQLSaturday is a free 1-day training event for Microsoft Data Platform, SQL Server professionals and those wanting to learn about SQL Server and the Microsoft Data Platform. Admittance to this event is free, all costs are covered by donations and sponsorship. Please register soon as seating is limited, and let friends and colleagues know about the event!

Also, we offer 4 pre-conference workshops on the day before the main conference. So, if one day of training isn’t enough, join SQL Server Experts and MVPs for full-day workshop on October 26th, 2018.

Hotel Recommendations

Our hotel recommendation for the SQL Saturday is the INNSIDE München Parkstadt Schwabing, Mies-van-der-Rohe Straße 10, 80807 Munich, Germany. The hotel is just around the corner and just a few steps away from the Microsoft Office.

Alternative hotels in the same neighborhood are:

Powershell – Ermitteln aller installierter SQL Server Services

Manchmal sind es die kleinen Dinge, die einem das Leben erleichtern können… 😉
Vor oder nach der Installation des SQL Servers auf einem Windows Server sollte man auch einen entsprechenden Virenschutz installieren, oder man möchte bestimmte Dienste/Services aus dem Monitoring ausklammern… dann benötigt man für die jeweiligen Ausnahmen die Pfade und Namen der ausführenden Programme. Natürlich kann man sich diese Informationen manuell über die Services-Ansicht holen, aber diesen „Klick-Aufwand“ kann man sich getrotzt sparen, denn es geht viel einfacher.

Beispiel aus dem Leben

Für einige unserer Kunden und deren Anti-Viren-Strategie müssen wir unseren Kollegen immer eine EMail zukommen lassen, welche Dienste (ausführbaren Programme) und deren Verzeichnisse NICHT gescannt werden sollen… wir haben uns also auf ein Format geeinigt, welches wir schnell und einfach liefern können und wo die Kollegen die relevanten Daten auf „einen“ Blick entnehmen können, um diese dann in der Administrations-Oberfläche für den jeweiligen SQL Server zu hinterlegen. Da wir nicht nur einen SQL Server installieren, sondern ein paar mehr… musste eine „universelle“ Lösung her.

Overview SQLServer Services GUI

Wo bekommen wir also diese Daten idealerweise her? Natürlich aus dem Betriebssystem und dem bereits mitgelieferten WMI-Stack… also ran an die Services-Informationen

Get-WmiObject win32_service

Aber so erhalten wir eben eine Vielzahl von Informationen und Services, die wir für unsere Zwecke gar nicht gebrauchen können, denn wir wollen ja nur die SQL Server relevanten Services identifizieren und an die Kollegen melden… also müssen wir diese Informationsflut mit einem Filter eindämmen.


Jetzt erhalten wir nur noch alle Services mit dem Pattern „*sql*“, was für einen SQL Server völlig ausreichend ist, denn glücklicherweise werden aktuell alle SQL Server auf Windows Dienste mit eben diesem Pattern bezeichnet. Hier fehlen aber die relevanten Informationen wie Pfad und Exe oder der Anzeigename… damit wir nun auch diese weiteren Informationen erhalten muss man ein wenig tricksen und die Pfad-Angabe – welche hier ebenfalls (versteckt) enthalten ist – zerlegen.

Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}}


Theoretisch könnte man das nun an die Kollegen schicken, damit aber dort kein Fehler bei Copy&Paste passiert, formatieren wir das Ergebnis noch mit dem Powershell-Ausgabe-Format „Format-List“, dann verrutscht man nicht mehr so leicht in der Zeile und es ist etwas übersichtlicher (auf meinem Laptop ist nicht viel installiert, aber ihr versteht zumindest was ich meine) 😉

Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}} | Format-List

Dieses Ergebnis können wir nun ohne Bedenken in ein Mail-Template einfügen und den Kollegen schicken…

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

Did it – I’m re-awarded as an MVP

1st of July was and will be the day every MVP is afraid of 😉 We’re always hitting F5 during the whole day to update our profile page in order to see if we are re-awarded. Last Sunday was that special day in our life as Microsoft renewed its re-award cycle from every quarter to a yearly cycle according to their fiscal year. As we had read so many emails the weeks before 1st of July from MVPs who got a call that they won’t be re-awarded for several reasons many of us were really nervous if they will get that great email.

I’m incredibly thankful for being awarded the Microsoft Most Valuable Professional Award (MVP) for the 2nd year, this year in „Data Platform“ which makes me really happy cause that’s fits better to me!

As I saw so many people not being re-awarded this year I will focus even more on my topics and will try to increase my community activities to stay within the award program and be part of that community. I already have some plans for the rest of the year 😉 For example – getting out of my comfort zone and give a session in a non-German spoken country – I’d like to speak at a user group somewhere or at an SQLSaturday or any other data-platform event. Eventually, I’ll be able to speak an internal event in September in Madrid… who knows… we will see if they pick me.

Additionally, during this award cycle, I’m planning to join the MVP Summit in Seattle for the first time which will be also a great achievement for me. 😉

I’ll keep you informed about upcoming plans, sessions and/or meetups for you can meet me (and introduce yourself to me).

picjumbo.com at Pexels