SQLSaturday München #555 – Erlebnisbericht

Historischer SQLSaturday #555 in München

Als erste Veranstaltung überhaupt konnte Andre Essing als Organisator der beliebten Trainingsveranstaltung die Räumlichkeiten des neuen Microsoft Headquarters in München nutzen. Die gelungene Umgebung hatte einen großen Einfluss auf das Wohlbefinden aller Teilnehmer, so dass sowohl die Precons als auch der eigentliche SQLSaturday ein großer Erfolg waren.

Es war mein zweiter SQLSaturday überhaupt, mein zweiter in diesem Jahr und erneut eine wirklich großartige Erfahrung mit welcher Leidenschaft alle Speaker, Volunteers und Orga-Team diese Tage über die Bühne gebracht haben. Erneut hatte ich mich als Volunteer zu zahlreichen Aufgaben als Unterstützer gemeldet und freute mich schon riesig auf die bekannten Namen ( zu vielen Namen hatte ich kein Gesicht, was sich aber im Laufe der beiden Tage änderte ). Aber ich sollte vielleicht vorne anfangen 😉

Meine Anreise nach München

In erster Linie muss ich hier meiner Familie und meinem Arbeitgeber danken. Meiner Familie ging in der Woche gesundheitlich nicht wirklich gut und ich wäre am liebsten zu Hause geblieben, aber meine Frau wollte mir diese Zeit nicht verderben und ließ mich fahren. Zum anderen mein Arbeitgeber, der so freundlich war die Reisekosten zu übernehmen, wenn ich schon in meiner Freizeit (Abbau Gleitzeitstunden 😉 ) mich mit fachlichen Themen beschäftige, mich kostengünstig weiterbilde und (wäre ich als Speaker aufgetreten) auch noch “Marketing” betrieben hätte.

Also meine Anreise fand bereits am Donnerstag mit der Deutschen Bahn statt, über Kassel ging es mit dem ICE nach München, so hatte ich noch etwas Zeit mir den englischen Garten anzuschauen und mich sehr nett mit meiner Vermieterin und Ihrem Lebensgefährten zu unterhalten. Auch dieses Mal habe ich meine Unterkunft mit Airbnb gebucht, die Hälfte vom Ibis-Preis bezahlt und wesentlich weniger als im Innside… und beide Hotels sowie das Microsoft Headquarter waren keine 5 Minuten Fußweg entfernt. Nach einem ausgiebigen Spaziergang im englischen Garten vorbei am chinesischen Turm und dem Eisbach ging es in das Milchhäusl zum gemütlichen Bio-Bierchen und einer leckeren Brotzeit. Wieder in meiner Unterkunft angekommen, lud mich die Vermieterin mit ihrem Lebensgefährten noch auf ein Bierchen und ein lockeres Gespräch ein. Später erfuhr ich, dass die anderen bereits Anwesenden Speaker, Orga und Volunteers sich zum #Warmup in einer Kneipe getroffen hatten…

Die PreCons und der Aufbau

Der Freitag begann recht lustig, manche würden sagen hektisch… anscheinend war von der Security keiner so wirklich auf unsere Veranstaltung und die kommenden Teilnehmer vorbereitet oder man war schlicht überfordert. 😉
Die Teilnehmerlisten und Besucherausweise (im Public-Bereich?) waren vorbereitet und so haben wir uns die Listen und Ausweise geschnappt und allen Teilnehmern selber ausgehändigt. Die nächste Hürde waren die Zugänge… ursprünglich waren die Sessionräume als öffentlicher Bereich geplant, irgendwann hat irgendwer umentschieden und dort “Vereinzeler” aufgestellt… so musste immer einer mit Microsoft-Badge die Türen öffnen um unsere Teilnehmer rein zulassen.

Pünktlich zum 8:30 konnten dann die PreCons starten, zumindest drei von vier… im ersten Session-Raum fehlte es an Strom so dass William und Andre leider nicht mit Ihrer Präsentation starten konnten… aber auch davon hat man sich nicht kleinkriegen lassen und erst einmal ohne Beamer angefangen. Nach rund einer Stunde hatten wir dann auch endlich Strom und konnten die Session ohne Einschränkungen fortsetzen.

SQL Saturday #555 München - PreCons

  • From Zero To Hero – Datawarehousing mit dem SQL Server – Gabi Münster, Frank Geisler, Klaus Höltgen
  • Power BI – Ein Rundumblick – Wolfgang Strasser
  • Azure Extrem – Robert Rasp
  • DevOps & SQL Server – Expert Advice for Teams without a DBA – William Durkin, Andre Kamann

In den Pausen während des Tages wurden wir sehr gut durch Microsoft verpflegt (Vielen Dank an Jan!), so dass es keinem an irgendwas mangelte… Butter-Brezel, Tee, Kaffee, Erfrischungsgetränke und zum Mittag die volle Auswahl (!!)… Respekt dafür. So konnten alle Teilnehmer allzeit gestärkt und frisch in die Sessions zurückkehren.SQL Saturday #555 München - Snacks

Nach den PreCons Sessions haben wir (also das eigentliche SQLSaturday Team um Andre Essing und die Volunteers, sowie die Sponsoren) alle Stände aufgebaut und vorbereitet, alle Banner aufgestellt und uns über die großartigen technischen Möglichkeiten des Microsoft-Atriums erfreut. Zum Abschluss ging es dann für die Speaker, Orga-Team und exc. Volunteers zum gemeinsamen Speakers-Dinner ins Paulaner Brauhaus mit Führung!

SQL Saturday #555 München - Aufbau/Dinner

Der SQL Saturday #555 München

Aufgrund der guten Vorbereitungen und spitzen Vorbereitungen des Orga-Teams (Danke an euch und Andres’ Frau) konnten wir am Samstag Morgen rechtzeitig und ohne großen Stress in den SQL Saturday starten. Die Anmeldung verlief recht ruhig, alle Teilnehmer waren auf das neue Microsoft-Gebäude und die interessanten Sessions gespannt. Nach einer kurzen Einleitung durch Andre Essing (PASS Chapter Leader Bayern) und Jan Schenk (Microsoft Audience Evangelist) verteilte sich die Menge auf die einzelnen Räume (diesmal alle mit Strom).

SQL Saturday #555 München - Einleitung Andre Essing, Jan Schenk

Auch auf diesem SQL Saturday konnten die Teilnehmer aus verschiedenen Tracks wählen und sich so einen individuellen Session-Plan zusammenstellen. Jede Session war maximal 60 Minuten lang, so dass man je nach Zielgruppe einen mehr oder weniger tiefen Einblick in die angebotenen Themen erhielt.

Andre Essing hat es mit seinem Team geschafft zahlreiche nationale und internationale Sprecher für den SQLSaturday #555 zu begeistern, so fanden sich unter den Sprechern auch die verschiedensten Nationalitäten wieder. Diese Sprachen-MischMasch sorgte in Verbindung mit den jeweiligen Themen für sehr spannende und unterhaltsame Vorträge.

Session-Beispiele

  • Niko Neugebauer aus Portugal – Columnstore Technology Improvements in SQL Server 2016
  • Ryan Yates aus England – Why and how to Implement PowerShell DSC for SQL Server
  • Kalen Delaney aus Amerika – Are You Optimistic About Concurrency?
  • Dejan Sarka aus Slowenien – Using R in SQL Server, Power BI, and Azure ML
  • Andre Kamman aus Holland – Powershell community scripts for DBAs
  • Wolfgang Strasser aus Österreich – Bauer BI und seine Pig Data

Ihr seht es war sehr bunt und sehr informativ für jeden…

Den Abschluss bildete – wie auf jedem SQLSaturday – die Raffle, also eine Verlosung von gesponserten Preisen. Diesmal mit dabei eine X-Box, zahlreiche Lizenzen, Sitzkissen, eine Video-DVD vom letzten Summit und viel mehr.

SQL Saturday #555 München - Raffle

Ich möchte mich bei allen Teilnehmern, Sponsoren, Organisatoren, Volonteers und bei Microsoft bedanken für diesen großartigen SQLSaturday #555 in München, es war richtig toll euch alle zu treffen, interessante Vorträge zu hören und nette Leute kennenzulernen. Ich hoffe wir sehen uns bald wieder, aus meiner Sicht voraussichtlich zur SQL Server Konferenz in Darmstadt (oder den einen oder anderen schon vorher in der Regionalgruppe)

Copyright der Bilder liegt bei jeweiligen Fotografen, hier neben meinen eigenen Bilder… Vielen Dank an den @SQLPaparazzo und seinem Flickr-Fotostream

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.

#1 Powerplan – SQL Server konfigurieren mit Powershell

Ich möchte in den folgenden Beiträgen auf meine Erfahrung bzw meinen Umstieg auf die Konfiguration des SQL Servers mittels Powershell eingehen und einige Beispiele (hier zum Beispiel den Powerplan) präsentieren. Es kommt immer wieder vor, dass wir verschiedenste Ausprägungen des SQL Server installieren sollen, eines haben aber alle im Grunde genommen gemeinsam… eine auf den Best-Practices beruhende Grundkonfiguration. Diese muss auf jedem SQL Server ausgerollt werden, damit dieser performant läuft. Bisher haben wir das immer manuell oder mit T-SQL gemacht, nun wird es aber Zeit diese Methode umzustellen auf eine etwas einfachere bzw zentralere Variante. Die Konfiguration des SQL Servers mit Powershell sowie ich es hier vorstelle, muss nicht für jede Umgebung passen, seht es bitte nur als Leitfaden an. Des Weiteren werde ich hier nur auf meine “Snippets” eingehen und nicht mein ganzes Skript vorstellen, es gehört natürlich ein gewisser Powershell Rahmen (Synopsis, Hilfe etc) um das Snippet, damit es überall von jedem ausgeführt werden kann.

Powershell against “Balanced” Powerplan

Seit dem Windows 2008R2 Betriebssystem werden die Power Pläne immer mit dem Default-Powerplan “Balanced” ausgerollt, dies kann aber unter Umständen zu starken Performance-Einbussen führen. Bei der Ausführung von einfachen Skripten oder Programmen ist die Wahrscheinlichkeit der Performance-Reduzierung eher sehr gering, allerdings je komplexer die auszuführenden Anwendungen sind, desto mehr die Server-Ressourcen genutzt werden müssen, desto mehr wird man die Nachteile des “Balanced”-Modes spüren. Im Balance-Powerplan wird zum Beispiel die Taktung des Prozessors und die Energieaufnahme der einzelnen Kerne reduziert, dadurch kann die Leistung der CPU nicht voll genutzt werden. Erst wenn man den Powerplan umkonfiguriert auf “High Performance” kommt man in den Genuss der vollen CPU-Leistung.

Windows Server Powerplan für mehr Performance anpassen

Nun kann man sich lange durch die Einstellungen der Power Optionen des Windows Betriebssystemes klicken:

1. Start => Control Panel
2. Control Panel => Power Options (notfalls das Wort “Power” in das Suchfeld eingeben)
3. Per default ist die Auswahl der einzelnen Powerpläne disabled, man muss also erst auf den Link “Change settings that are currently unavailable” klicken.
4. Nun kann man den Powerplan “High Performance” auswählen.
5. Power Option Fenster schliessen

Man könnte dies aber – wie der Beitragstitel andeutet – auch mit Powershell ändern, dies vereinfacht bei Wiederholungen die Änderung am jeweiligen Server.

function SetPowerPlan([string]$PreferredPlan) 
{ 
    Try
    {
        Write-Host "Setting Powerplan to $PreferredPlan" 
        $HighPerf = powercfg -l | %{if($_.contains("High performance")) {$_.split()[3]}}
        $CurrPlan = $(powercfg -getactivescheme).split()[3]
        if ($CurrPlan -ne $HighPerf) {powercfg -setactive $HighPerf}
    } 
    Catch
    {
        Write-Host "Setting the value of powerplan properties failed." -ForegroundColor Red
    }
}

Man muss zwar den leichten Umweg über die “Kommandozeile” nehmen, diese lässt sich mit Powershell aber recht einfach “auslesen” und weiter verarbeiten bzw manipulieren.
Also erst die ID des “High Performance” Powerplan ermitteln, dann auch die ID des aktuellen Powerplans, beide IDs miteinander vergleichen, bei Anweichungen wird über die powercfg.exe der neue Powerplan aktiviert.

Wie ich mittlerweile gelernt habe… typisch Powershell… kurz, einfach und wirksam 😉
Ich kann nur jedem empfehlen sich mit Powershell für den SQL Server zu beschäftigen, in den nächsten Beiträgen werde ich noch einige Snippets veröffentlichen.

Morgen finden erst einmal die Pre-Cons im Rahmen des SQLSaturday München #555 statt, auch hier werde ich wieder viel zum Thema Automatisierung auf SQL Servern mittels Powershell erfahren. Garantiert wieder mit vielen neuen Ideen für weitere Anwendungen von Powershell im täglichen Einsatz.

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.

Powershell meets SQL Server – Backup einer Remote Datenbank

Auf dem SQLSaturday #525 in St. Augustin hatte ich bereits das Vergnügen Andre Kamann zu lauschen, was er alles mit Powershell und dem SQL Server anstellt, meinen zweiten Kontakt zu Andre hatte ich jetzt beim SQLGrillen in Lingen, bei dem er uns die wesentliche Vereinfachung eines Rollouts des Ola Hallengren Skriptes näher brachte. Irgendwie hat mich diese “Vereinfachung” inspiriert… ich bin eigentlich auch eher ein “fauler Hund” und versuche mir mit Tools, Skripten  oder eigenen unterstützenden Webseiten das DBA Leben zu erleichtern. Heute kam dann ein Ticket zu mir, bei dem es um ein einfaches Backup einer Datenbank ging, der Kunde hat Probleme mit seiner Applikation und möchte nun eine Kopie der Datenbank an den Software-Hersteller schicken. Solche Aufgaben haben wir immer wieder, daher dachte ich heute morgen an Andre und seine Powershell-Skripte.
Viele werden jetzt sagen, so ein Backup ist doch recht einfach => entweder auf den Server per RDP oder von seiner Workstation mit dem SQL Server Management Studio verbinden, dann die Datenbank auswählen und mit der rechten Maus “Tasks => Backup => …” Klar das geht, ABER da wir hier meistens über Citrix Steppingsstones oder Admingates in die Kundennetze müssen, erleichtert es uns die Arbeit schon um einiges, wenn wir den einen oder anderen Hop reduzieren können.

Mein Powershell-Template

Da dies meine ersten Schritte mit Powershell-Skripten sind, musste ich mich erst damit auseinandersetzen, wie man am besten ein solches Powershell Skript strukturell aufbaut. Hierzu habe ich auf diesen Powershell Blogs gelesen und keinen “Standard” ausfindig machen können, aber überall konnte ich mir ein wenig abschauen und somit einen “ersten Wurf” eines Powershell Skript Templates erstellen. Natürlich muss sich dieser noch in der täglichen Arbeit bewähren und eventuell angepasst werden, aber erst einmal kann ich (denke ich zumindest) damit arbeiten.

Angefangen habe ich natürlich mit einem Header

# #############################################################################
# DBA - SCRIPT - POWERSHELL
# NAME: template.ps1
# 
# AUTHOR: Björn Peters, SQL-aus-Hamburg.de
# DATE: 2016/08/24
# EMAIL: info@sql-aus-hamburg.de
# 
# COMMENT: This script will....
#
# VERSION HISTORY
# 1.0 2016.08.24 Initial Version.
# 
#
# OPEN POINTS TO ADD
# -Add a Function to ...
# -Fix the...
# 
# #############################################################################

Aus dem Tagesgeschäft weiß ich bzw habe ich die Erkenntnis gezogen, dass es für den DBA/Ausführenden am einfachsten ist, wenn die ggfs manuell zu konfigurierenden Parameter (wenn sie nicht übergeben werden) ganz oben stehen sollten, damit man sie möglichst schnell findet und einfach editieren kann. Also kommt direkt in meinem Powershell Skript Template nach dem Header ein Abschnitt zur Konfiguration des Skriptes.

# --- CONFIG ---#
# Script Path/Directories
$ScriptPath = (Split-Path ((Get-Variable MyInvocation).Value).MyCommand.Path)
$ScriptPluginPath = $ScriptPath + "\plugin\"
$ScriptToolsPath = $ScriptPath + "\tools\"
$ScriptOutputPath = $ScriptPath + "\Output\"
# Date Format
$DateFormat = Get-Date -Format "ddMMyyyy_HHmmss"
# -- END CONFIG ---#

Jetzt kommen wir zu einem der wichtigsten, aber am meisten vernachlässigten Abschnitten eines solchen Powershell Skriptes… der Hilfe.
Bei meinen Recherchen bin ich immer wieder über den Widerspruch gestolpert, dass man auf der einen Seite möglichst sein Skript kurz und übersichtlich gestalten soll, auf der anderen Seite aber gut dokumentiert und erläutert. Natürlich kann man aus einem Skript mehrere Versionen machen, eine zum Ausführen und eine zum Weitergeben… aber das führt meist zu Fehlern da man garantiert nicht immer alle Änderungen in beiden Daten ausführt => also bitte gleich richtig machen und einen Hilfe-Abschnitt integrieren und ausführlich beschreiben.

# --- HELP ---#
<#
.SYNOPSIS
Cmdlet help is awesome.
 
.DESCRIPTION
This Script does a ton of beautiful things!
 
.PARAMETER
 
.INPUTS
 
.OUTPUTS
 
.EXAMPLE
 
.LINK
http://www.sql-aus-hamburg.de
#>
# --- END HELP ---#

Zu guter letzt bleiben nur noch die Abschnitte für die einzelnen Funktionen und das eigentliche Powershell Skript. Früher (zu meinen VB / VBA Zeiten) hatte ich gelernt, dass man die Funktionen immer nach unten schreibt und den eigentlichen Programmcode nach oben. Aber dies scheint (zumindest für Powershell) mittlerweile überholt zu sein, also kommen die Funktionsaufrufe, die eigentliche Logik des Skriptes nach unten.

# --- FUNCTIONS ---#
Param(
 
)
 
BEGIN {
 
}
 
PROCESS {
 
}
 
END {
 
}
# --- END FUNCTIONS ---#
 
# --- SCRIPT ---#

Quellen und großen Dank an :
http://www.lazywinadmin.com/2012/03/powershell-my-script-template.html
Bei Francois habe ich die meisten Dinge (nachdem ich sie auch anderweitig unter “Best Practices” für Powershell Skripte gelesen hatte) in einem Template gefunden und für mich am besten geeignet befunden. Also habe ich sein Template nahezu 1:1 übernommen.

Mein erstes Powershell Skript

Nun zum eigentlichen SQL Server Backup Skript, welches ich mit Powershell umsetzen wollte.
Also ich wollte mit “Bordmitteln” von einer zentralen Maschine ein Backup auf einem Remote SQL Server erstellen, welches ich dann “einfach” für den Kunden oder Drittdienstleister kopieren und bereitstellen konnte. Was liefert also die SQL Server Installation von Haus aus für Möglichkeiten? Natürlich die SQL Server Management Objects (SMO), welche im Rahmen der Management Tools Installation mitinstalliert werden .

Welche Parameter möchte ich denn angeben bzw übergeben, damit mein Backup erfolgreich läuft…

  • Servername
  • Instanzname
  • Datenbankname
  • SQL-Login => Username/Passwort

Nach einigem Nachdenken kamen noch zwei weitere Parameter dazu… => CopyOnly (True/False) und OpenInExplorer (True/False)

Param(
          [Parameter(Mandatory=$true)][string]$ServerName,
          [string]$InstanceName,
          [Parameter(Mandatory=$true)][string]$DatabaseName,
          [string]$SQLUserName,
          [string]$SQLPwd,
          [switch]$CopyOnly = $True,
          [switch]$OpenInExplorer = $False
)

Also BEGIN der Funktion

Erst einmal alle Parameter überpüfen, zusammensetzen und ggfs umsetzen, so dass sie im Skript bzw T-SQL Befehl verwendet werden können.
Vielleicht kann man das optimaler/sicherer gestalten (Anmerkungen/Tips hierzu bitte über die Kommentarfunktion), aber ich wollte ja einen schnellen Erfolg. Zu Beginn der Funktion prüfe ich also, ob es sich um eine Named-Instance oder Default-Instance handelt, wie der User sich anmelden möchte => Windows Authentifizierung oder SQL Login, on das Backup als Copy-Only-Backup erstellt werden soll und natürlich den Zielort des Backups (Default Backup Directory).

BEGIN {
	"Starting Backup on $($ServerName)"
 
        [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null
        [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | out-null
 
        $CommonParameters = ''
 
        if ($InstanceName) {
	    $SQLServer = $ServerName + "\" + $InstanceName
        } else {
            $SQLServer = $ServerName
        }
 
        $SQLSvr = New-Object 'Microsoft.SqlServer.Management.SMO.Server' $SQLServer
        if ($SQLUserName -and $SQLPwd) {
            $SQLSvr.ConnectionContext.LoginSecure=$false;
            $SQLSvr.ConnectionContext.Login=$SQLUserName
            $SQLSvr.ConnectionContext.Password=$SQLPwd
        }
 
	$BackupDir = $SQLSvr.Settings.BackupDirectory "BackupName - $($BackupDir)\$($DatabaseName)_db_$($DateFormat).bak"
 
        if ($CopyOnly -eq $True) { $CommonParameters += " -CopyOnly" }
 
}

Nun kommt der PROCESS

Wie der Name schon sagt, hier geschieht der eigentliche Prozess, also die eigentlich Hauparbeit… Im Falle eines Backup-Skriptes werden hier die Backup Befehle ausgeführt. Da dies mein Einstieg in die Powershell Programmierung ist, es gibt bestimmt Wege dies anders bzw optimaler zu gestalten, aber für mich funktionierte das erst einmal ganz gut so. Wenn also der String $CommonParameters leer oder Null ist wird der einfache Backup Befehl ausgeführt ansonsten werden die WITH-Parameter an den Backup Befehl angehängt. Ansonsten passiert in diesem PROCESS Schritt nicht viel 😉

PROCESS {
        IF([string]::IsNullOrWhiteSpace($CommonParameters)) {
            Backup-SqlDatabase -InputObject $SqlServer -Database $DatabaseName -BackupFile "$($BackupDir)\$($DatabaseName)_db_$($DateFormat).bak"
        } else {
		    Backup-SqlDatabase -InputObject $SqlServer -Database $DatabaseName -BackupFile "$($BackupDir)\$($DatabaseName)_db_$($DateFormat).bak" $CommonParameters
        }
	}

Alles hat ein ENDe

Eigentlich wäre hier nun alles zu Ende, wir haben ein Backup auf einem Remote SQL Server in das Default Backup Verzeichnis geschrieben… hier könnten wir es abholen und dem Anforder zur Verfügung stellen. Aber ich bin ein wenig faul… also was liegt näher als den letzten Schritt noch etwas zu vereinfachen.
Also habe ich in den END Abschnitt einfach einen Explorer Aufruf mit dem Zielpfad (Default Backup Verzeichnis) hinzugefügt, so muss ich nicht erst lange suchen und hin und her klicken, sondern der Explorer öffnet sich direkt mit dem Zielpfad und ich brauche die Datei nur noch weg zu kopieren. 😉

END {
        "Finished Backup on $($ServerName)"
        if ($OpenInExplorer -eq $True) { 
            $NewBackupDir = "\\$($ServerName)\"
            $NewBackupDir += $BackupDir.Replace(':\', '$\')
            Invoke-Item $NewBackupDir 
        }
	}
}
# --- END FUNCTIONS ---#

Zum Abschluss im Skript muss natürlich noch der ganze Ablauf einmal gestartet werden, also rufe ich als “letzte” Zeile des Skriptes schnell die Funktion auf… FERTIG.

Vielen Dank nochmal an Andre für die Inspiration.

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.

SQLGrillen 2016 – erneut erfolgreiche SQL-Trainings im Emsland

Gestern (19.August 2016) lud die SQLPass Regionalgruppe Emsland um William Durkin (b|t) zum zweiten SQLGrillen nach Lingen ein. William und sein Team haben es nach 2015 wieder geschafft einen großartigen Event auf die Beine zu stellen. Beim SQLGrillen geht es um die Vermittlung von Wissen in einem ungezwungenen Rahmen mit Gleichgesinnten neue Ideen und Entwicklungen rund um den SQL Server bzw die Microsoft Data Plattform zu diskutieren.

Die RG Emsland und das das IT Zentrum Lingen boten eine große und interessante Auswahl von Themen wie zum Beispiel “Securing SQL Server Recommended Practices” von John Martin, “Statistics with T-SQL” mit Dejan Sarka oder “SQL Server & Application Security For Developers” von Mladen Prajdić. Auch zwischen den einzelnen Session blieb genügend Zeit um sich den Sprechern und Teilnehmern über die verschiedensten Themen, Alltags-Probleme oder neue Features auszutauschen.

Für das leibliche Wohl wurde nicht nur nach den Sessions gedacht, sondern auch schon während des gesamten Tages… es gab ausreichend Snacks, Kuchen und Getränke. Das Highlight war natürlich das abschließende SQLGrillen im Innenhof des IT Zentrums mit einer gehörigen Portion Fleisch, Würstchen, leckeren Salaten und sogar vegetarischen Gerichten sowie Bier (mit oder ohne Alkohol). Aus meiner Sicht eine sehr gelungene Veranstaltung, die alle SQL Server Interessierten im Norden anspricht, auch wenn der Weg nach Lingen etwas lang und “erschwerlich” ist.

Anreise zum SQLGrillen

Mein SQLGrillen begann natürlich mit der Anreise nach Lingen, laut Google Maps sollte meine Fahrt über ~270 und ~3 Stunden gehen. Was Google und ich nicht wussten, war die Tatsache dass die letzten ~90km über eine Bundesstraße in Richtung holländische Grenze mit sehr sehr viel LKW-Verkehr geht. Dieser LKW-Verkehr in Verbindung mit landwirtschaftlicher Erntezeit führte zu einer Durchschnittsgeschwindigkeit von etwa 50km/h auf dieser Bundesstraße 213 und nicht mehr 3 Stunden Anreise sondern fast 4 Stunden… Ok, im nächsten Jahr weiß ich es besser und werde mir einen anderen Weg aussuchen, die Bremer Teilnehmer haben mir hierzu schon Tips gegeben. Also falls ihr das nächste Jahr auch zum SQLGrillen nach Lingen wollt… fahrt nicht über die B213 oder plant etwas mehr Zeit ein.

Sessions beim SQLGrillen

Man kann leider nicht immer an jeder Session teilnehmen, so musste ich mich für die “Wichtigeren” entscheiden.

Uwe Ricken – Entzauberung von „Clustered Indexen“

Uwe erklärte mit vielen Bewegung und Emotionen – somit sehr unterhaltsam und kurzweilig – den Unterschied zwischen Heaps und Clustered Indexen, deren Vor- und Nachteile und Einsatzszenarien. Seine anschaulichen Demos unterstrichen seine Präsentation und Worte sehr gut. Mehr Informationen zu Heaps und Clustered Indexen findet man auf dem Blog von Uwe, wo er ebenfalls sehr spannend die Welt der Indexe erläutert.

Der @dbBerater startet die erste Session über Heaps und Clustered Indizes beim #SQLGrillen Emsland - Danke an Thomas Hütter für das Bild

Frank Geisler – Power BI 2.0

Frank brachte uns einen Einstieg in die Welt von Power BI, seinen Tools wie den Power BI Desktop und Möglichkeiten. Er zeigte die Historie der Tools, den aktuellen Stand der Entwicklung und anhand einer Demo (Analyse / Visualisierung von Webseiten-Daten) die verschiedenen Möglichkeiten Datenquellen miteinander zu verknüpfen und deren Daten in einem Dashboard übersichtlich grafisch mittels verschiedener Diagramme darzustellen.

Power BI 2.0 - Power BI Desktop

Oliver Engels planschte im Azure Data Lake

Dieses Mal musste Oliver seine Session alleine halten, da Tillmann verhindert war und sogar auch noch auf Wunsch der Teilnehmer statt auf deutsch seine Session auf Englisch halten. Oliver brachte den interessierten Zuhörern die Einsatzmöglichkeiten des Azure Datalakes näher, welche Möglichkeiten und Szenarien sich mittels Azure Datalake Analytics und Azure Datalake im Bereich Big Data realisieren lassen. Anhand seiner Erfahrungen mit diesem Produkte konnte er auch aus dem Nähkästchen plaudern und so einige “Haken/Schwächen” aufzeigen, aber auch die Möglichkeiten dieser großartigen Tool-Landschaft aufzeigen.

Oliver Engels und Tillmann Eitelberg - Die SSIS Toolboyz planschen im Azure Data Lake

Andre Essing – SQL Server 2016 New Features – Stretched Database

Andre Essing eröffnete uns die Welt des neuen Features im SQL Server 2016 “Stretched Database”. Welche Möglichkeiten und Einsatzmöglichkeiten dieses neue Feature bringt, was eventuelle Fallstricke sind und wies ebenso auf Vor- und Nachteile hin. Seine Erläuterungen unterstrich er mit passenden Demonstrationen am “lebenden” Objekt. Er migrierte live Tabellendaten seines On-Premise SQL Servers in die Azure Cloud und wieder zurück, um die Einfachheit dieses Features zu demonstrieren.

Andre Essing - SQL Server 2016 New Features - Stretched Database

André Kamman – Manage Ola Hallengren’s scripts with PowerShell

Den Abschluss vor dem SQLGrillen bildete dann André Kamman mit seinen Ausführungen zu den Einsatzmöglichkeiten von Powershell zum Ausrollen und Überprüfen der Maintenance-Solution von Ola Hallengren. André zeigte uns seine Powershell-Skripte mit denen er die Skripte automatisiert auf eine Vielzahl von Servern ausrollt und konfiguriert, ebenso die Überprüfung der verwendeten Werte wie Cleanup-Time oder Backup-Pfaden. Zu guter letzt vermittelte er einen eindruckvollen Einblick über die Verwendung seiner Skripte zur Analyse/Überprüfung der gesamten SQL-Server Umgebung mittels der Diagnose-Skripte von Glenn Berry, welche er ebenfalls mit Powershell auf einer Vielzahl von Servern ausführte und die Ergebnisse direkt in eine gut strukturierte und lesbare Excel-Datei exportierte.

André Kamman - Manage Ola Hallengren's scripts with PowerShell

Fazit zum SQLGrillen

Bleibt nur “Vielen Dank” an William, seinem Team, all seinen Helfern und Sprechern zu sagen. Ihr habt erneut einen großen Event für die Community auf die Beine gestellt, macht bitte weiter so. Ich werde das SQLGrillen 2017 auf jeden Fall wieder einplanen und freue mich schon jetzt auf noch mehr großartigen Content und noch mehr Teilnehmer… (2015 => ~25, 2016 => ~60, 2017 => ???)

 

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.

PASS RG Hamburg – Treffen Juli 2016 – Master Data Services

Conny und Sascha laden am Mittwoch, den 13. Juli 2016 wieder alle Microsoft Data Platform Interessierten herzlich zu einem spannenden Abend bei Microsoft ein, dieses Mal mit dem Thema “Master Data Services”. Das regelmäßige Treffen der PASS Regionalgruppe Hamburg findet auch diesen Monat wieder in der MICROSOFT Niederlassung Hamburg statt. Termin: Mittwoch, 13 . Juli 2016, 18:30 Uhr bis ca. 20:30 Uhr

Master Data Services 2016: Was gibt es neues bei den Masterdaten?

Diesen Abend wird Christoph Seck etwas über die Master Data Services im SQL Server 2016 erzählen.

Endlich (aka „Ja, sie leben noch“), es tut sich wieder etwas bei den MDS.

• Kaskadierende Parameter
• Aufregendes bei den Business Rules
• Modellübergreifende Referenzen
• Entrümpeln des Hierarchieunwesens

Etc. etc. Das schauen wir uns alles genau an und riskieren dann auch den einen oder anderen Blick unter die DB Haube.

für die BI Freunde: SCD2 in der Luxusvariante

Unter dem Begriff Slowly Changing Dimensions (deutsch: sich langsam verändernde Dimensionen) werden im Data-Warehousing Methoden zusammengefasst, um Änderungen in Dimensionstabellen zu erfassen und gegebenenfalls historisch zu dokumentieren. Im Wesentlichen unterscheidet man drei Verfahren, die nach Kimball (Lit.: Kimball, 2002) in Typen unterteilt werden. Allen gemein ist, dass vorhandene Datensätze über den Primärschlüssel mit neuen Datensätzen verbunden werden, um Änderungen in der Tabelle zu speichern. Technische Schlüssel sind aktuell nicht Gegenstand des Artikels.

Typ 2 ist ein komplexes Verfahren, um Dimensionstabellen oder einzelne Attribute der Tabelle zu historisieren, um zu jedem Zeitpunkt die dann gültigen Ausprägungen der Tabelle ermitteln zu können. Dies wird erreicht, indem zu jedem Datensatz ein Gültigkeitsintervall abgelegt wird. Um die Eindeutigkeit des PK zu gewährleisten, ist dieser um zumindest eines der Intervallattribute zu erweitern. In der Regel wird ein unten abgeschlossenes Intervall verwendet, indem der aktuell gültige Satz als unendlich gültig gekennzeichnet ist. Grundlage ist der Vergleich der vorhandenen Datensätze mit den neuen Datensätzen aus einer vollständigen und periodischen Extraktion über den fachlichen Primärschlüssel ohne das Gültigkeitsattribut oder die -attribute.

Quelle: https://de.wikipedia.org/wiki/Slowly_Changing_Dimensions

Christoph works as a BI Architect for KI Performance. With SQL Server and its BI Stack he is dealing for more than 15 years.
He is cofounder and chapter leader of the German PASS chapter of Hannover, Visiting Lecturer at the University of Hildesheim and regular speaker at conferences and German PASS events on DWH topics and agile project management.

 

Also wie bereits oben erwähnt trifft sich die SQL PASS RGV Hamburg:

Donnerstag, 11. Februar 2016, 18:30 Uhr bis ca. 20:30 Uhr in der MICROSOFT Niederlassung Hamburg (Adresse unten)

Microsoft Deutschland GmbH
Geschäftsstelle Hamburg
Gasstraße 6a
22761 Hamburg

Kostenlose Parkplätze befinden sich hinter dem Gebäude. Der Parkplatz ist über die Rampe mit dem Schild “Microsoft Kunden” erreichbar.
Nur wenige Minuten zu Fuß ist der S-Bahnhof Bahrenfeld entfernt (S1/S11).

Ansprechpartner vor Ort: MS Empfangs-Team, Cornelia Matthesius und Sascha Lorenz.

Wir bitten um eine vorherige Anmeldung per Email an: rgv_Hamburg@sqlpass.de

Wichtig: Wir benötigen die Anmeldungen möglichst 2 Tage vor dem Treffen, da wir uns bei Microsoft treffen können und dort Besucherausweise ausgestellt werden. Spontane Teilnehmer sind dennoch herzlich willkommen.

Im Namen von Conny & Sascha Vielen Dank und viele Grüße an alle Interessenten.

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.