neue Session – Powershell Toolbelt für DBAs – PASS UserGroup Hamburg

Am 13.04.2017 habe ich das Vergnügen erneut vor der Regionalgruppe Hamburg der PASS Deutschland e.V. sprechen zu dürfen. Sascha Lorenz und Cornelia Matthesius veranstalten – wie jeden Monat – wieder ein Treffen in der Hamburger Geschäftsstelle von Microsoft, dieses Mal ist es Mittwoch, der 13. April. Anmeldungen am Besten über die Meetup-Plattform =>  SQL Server Hamburg (by PASS Deutschland e.V.)

Automation makes things easier

Wer kennt es nicht? Immer heißt es “du musst effizienter werden”, aber wie… also noch schneller die Arbeit erledigen, aber wo kann man noch Zeit sparen? Natürlich bei immer wieder kehrenden Aufgaben, hier gibt es zweierlei Ansätze…

  • Tasks automatisieren
  • länger dauernde, komplizierte Aufgaben einfacher machen

Wie man das in Bezug auf die DBA-Tätigkeiten umsetzen kann und welche Tools/Produkte/Skripte dabei zum Einsatz kommen (können), darüber werde ich an diesem Abend erzählen.

Beispiele ?!

  • Wie lange braucht man um einen SQL Server von einer älteren Version auf eine neuere Version anzuheben?
    Natürlich inklusiv der Übernahme aller Logins, aller Jobs, aller Linked Server, aller Alerts und aller Datenbanken etc – 1-2 Tage je nach Umfang der einzelnen Unterpunkte.Was würdet ihr aber sagen, wenn man das auch in ~5 Minuten schaffen kann (abhängig von der Datenbank-Größe) und nur einer (!!) Kommandozeile ???
  • Datenbanken von Server zu Server kopieren, Datenfiles und Datenbank umbenennen und Orphaned-Users bereinigen in drei Zeilen Powershell ???

Nicht möglich ???

Lasst euch überraschen, ich habe einige Demos vorbereitet anhand derer ich euch diese Tools vorstellen werde.

Veranstaltungsort

PASS Deutschland e.V. ist die deutsche Microsoft SQL Server Community und ein offizielles Chapter der PASS International. Die Mitgliedschaft bei der PASS ist kostenfrei.

Das Treffen findet am 13. April 2017 um 18:30 in der Microsoft Niederlassung Hamburg in der Gasstraße 6a statt und wird von PASS Deutschland e.V.. ausgerichtet.

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.

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.

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.