Archive

Autor-Archiv

Prüfung 70-461 bestanden: Querying Microsoft SQL Server 2012 / 2014

Ich habe vor kurzem die Microsoft Zertifizierung 70-461 bestanden und möchte kurz reflektieren wie ich die Prüfung erlebt habe. Darüberhinaus möchte ich Tipps zur Vorbereitung geben.

Material zur Vorbereitung

Ich habe mir die von Microsoft zur Verfügung gestellten Video angeschaut: MCSA Certification Prep | Exam 461: Querying Microsoft SQL Server 2012
und https://www.youtube.com/watch?v=cZVtrjDOEeo. Auf der Microsoft Virtual Academy gibt es auch noch ein Trainingsvideo.

Dann habe ich mir das Buch Exam 70-461 – Querying Microsoft SQL Server 2012 von Microsoft gekauft. Ich kann dieses Buch für alle empfehlen, die nicht nur die Prüfung bestehen wollen, sondern den Inhalt auch verstehen, anwenden und behalten wollen. Itzik Ben-Gan und seine Co-Autoren haben ein gutes Buch geschrieben, wofür es hier ein Probekapitel zu lesen gibt.

Buch zu 70-461

Bei Measure Up habe ich mir einen Praxistest für die Zertifizierung gekauft. Der Praxistest besteht aus simulierten Prüfungen, es gibt dabei einen Trainings- und einen Prüfungsmodus. Die Fragen werden aus einem Pool von insgesamt 172 Fragen geschöpft. Nach der Durchführung kann man sich anzeigen lassen, warum eine gewählte Option richtig oder falsch war. Es gibt auch andere Anbieter wie z.B. Mindhub. Aufgepasst: Diese Praxistest sind recht gut um zu üben, was aber fehlt sind die Live-Coding Fragetypen einer echten Prüfung. Also: öfters mal das SQL Server Management Studio aufmachen und die Dinge nachpogrammieren und ausprobieren.

Ich habe bewusst keine Brain Dumps verwendet. Mein Ziel – neben dem Bestehen der Prüfung – war auch möglichst viel zu lernen und zu üben. Was natürlich sehr hilfreich ist, wenn man praktische Erfahrung mit dem SQL Server, auch mit älteren Versionen, hat.

Den Prüfungstermin habe ich hier festgelegt und gebucht.

Prüfungsrelevante Themen

  • Windows Functions und Ranking Functions
  • Transaction Isolation Levels
  • Indexierte Views
  • Sequence Object
  • CTEs
  • Merge
  • Trigger
  • COALESCE, IIF, ISNULL
  • Union, Union all, Intersect, Except
  • Datentypen
  • Errorhandling
  • Datenintegrität erzwingen (Constraints)
  • Vergleichsoperatoren mit ALL, SOME, ANY, NOT IN
  • Table valued functions
  • Cross Apply und Outer Apply
  • For XML

Eine gute Zusammenstellung der relevanten Themen findet man ebenfalls hier.

Prüfung

Die Prüfung ging 120 Minuten und bestand aus 53 Fragen. Sie besteht aus folgenden Teilbereichen:

  1. Troubleshoot and Optimize (25-30%)
  2. Create Database Objects (20-25%)
  3. Modify Data (20-25%)
  4. Work with Data (25-30%)

Folgende unterschiedliche Typen von Fragen waren zu bearbeiten:

  • Auswahl aus mehreren Optionen
  • Multiple Choice
  • T-SQL Code schreiben. Meist mussten Queries ergänzt oder korrigiert werden. Dass man Code während der Prüfung schreiben muss, war mir neu.
  • Drag & Drop von Code Sequenzen

Tipps

In der Rückschau war meine Vorbereitung in Ordnung. Nur bei der Prüfung ist mir die Zeit davon gelaufen. Ich habe den Fehler gemacht, alle Fragen nacheinander zu beantworten, auch die schweren und zeitintensiven. Mein Tipp für die Prüfung: Zuerst die einfachen Fragen machen und dann in einer zweiten Runde die zeitintensiven Fragen. Ausserdem würde ich vor der Prüfung noch mehr Code Beispiele machen. Die Prüfung ist machbar, jedoch sollte man sie nicht unterschätzen.

Ich hoffe dieser Artikel hilft, wenn jemand die Zertifizierung 70-461 machen möchte. Über Feedback würde ich mich freuen.

 

Training in Zürich zu neuer Datenmodellierungsmethode: Data Vault

Wikipedia definiert Data Vault so:

In den letzten Jahren hat sich mit Data Vault eine neue Modellierungstechnik für Data-Warehouse etabliert, die insbesondere für agile Datawarehouse geeignet ist. Sie bietet eine hohe Flexibilität bei Erweiterungen, eine vollständige Historisierung der Daten und erlaubt eine starke Parallelisierung der Datenladeprozesse.

Meine persönliche Erfahrung ist, dass Data Vault nicht nur bei einem Data-Warehouse eingesetzt werden kann, sondern auch bei Schnittstellen von OLTP-Systemen, welche Daten von anderen Systemen beziehen. Mit Data Vault bekommt man die Möglichkeit, die Qualität der Belieferung der Schnittstellen automatisiert zu überprüfen und zu messen.

DataVault

Im Frühjahr gibt es vom Buchautor Hans Hultgren ein dreitägiges Training in Zürich zur Data Vault Modellierung. Anschließend findet eine Prüfung zur Zertifizierung statt. Interessant ist das Thema für Daten Architekten, Datenbank Programmierer, Data Warehouse Architekten, Business Intelligence Consultants und für alle die mit dem Design und Implementieren von Daten-Schnittstellen und BI-Systemen zu tun haben.

Der Trainer, Hans Hultgren, berät seit über 20 Jahren Firmen im Bereich Data Warehouse und Business Development. Hans Hultgren hat ein Buch über das Thema „Modeling the Agile Data Warehouse With Data Vault“ geschrieben. Ich habe das Buch gelesen, ich kann es nur empfehlen.

Außerdem schreibt Hans Hultgren in seinem Blog (https://hanshultgren.wordpress.com/) regelmäßig über das Thema Data Warehousing und Data Vault.

 

 

Fallstricke der T-SQL Funktion isNumeric() – was ist zu beachten?

Manchmal geht man davon aus, dass die mitgelieferte Funktionen des SQL Servers das tun, was sie sollen. Aber dieses erwartete Verhalten trifft nicht immer zu. Wie im vorliegenden Fall der Funktion isNumeric.

Was habe ich erwartet: Ich habe erwartet, dass die Funktion isNumeric den übergebenen Parameter auswertet und als Resultat entweder 1 oder 0 zurückgibt, je nachdem ob es sich um einen numerischen Wert handelt, oder nicht.

Wie ist das Verhalten: Leider funktioniert die Funktion isNumeric nicht immer richtig – oder noch schlimmer, es werden Fehler geworfen (beim Datentyp date), wo man es absolut nicht erwartet.

Beispiele

T-SQL Code Datentyp Ergebnis Bemerkung
declare @myAttribute as decimal(18,6) = 123456789012.123456; select isnumeric (@myAttribute); decimal 1 korrekt
declare @myAttribute as date = ‚2016-02-17‘; select isnumeric (@myAttribute); date kein Folgender Fehler wird geworden: Msg 8116, Level 16, State 1, Line 8 Argument data type date is invalid for argument 1 of isnumeric function.
declare @myAttribute as datetime = CURRENT_TIMESTAMP; select isnumeric (@myAttribute); datetime 0 korrekt – erstaunlich, dass datetime geht und date nicht …
declare @myAttribute as varchar(12) = ‚Hallo‘; select isnumeric (@myAttribute); varchar 0 korrekt
declare @myAttribute as varchar(12) = ‚4711‘; select isnumeric (@myAttribute); varchar 1 korrekt. D.h. mit isnumeric lassen sich auch varchar-Variablen untersuchen.
declare @myAttribute as varchar(12) = ‚€4711‘; select isnumeric (@myAttribute); varchar 1 korrekt. Trotzdem hätte ich hier evtl. eine 0 erwartet. In der Dokumentation von Microsoft kann man nachlesen, das die führende Zeichen wie +, – sowie Währungssymbole nicht ausgewertet werden.

Nun könnte man ja auf die Idee kommen, zuerst mit der Funktion SQL_VARIANT_PROPERTY den Datentypen zu checken:

declare @myAttribute as date = '2016-02-17'
if SQL_VARIANT_PROPERTY(@myAttribute,'BaseType') not in ('decimal','numeric','float','real','int','bigint','smallint','tinyint','money','smallmoney')
 print 'not a numeric type'
else
 select isnumeric(@myAttribute)

Doch auch hier wird der Ausruck ausgewertet und ein Fehler geworfen:
Msg 8116, Level 16, State 1, Line 6
Argument data type date is invalid for argument 1 of isnumeric function.

Als nächstes habe ich das gleiche mit einem CASE Statement versucht. Aber auch hier gibts eine Fehlermeldung:

declare @myAttribute as date = '2016-02-17'
SELECT
 CASE 
  WHEN SQL_VARIANT_PROPERTY(@myAttribute,'BaseType') 
      not in ('decimal','numeric','float','real','int','bigint','smallint','tinyint','money','smallmoney') THEN 0
  ELSE isnumeric(@myAttribute)
 END AS isAttributeNumeric

Msg 8116, Level 16, State 1, Line 3
Argument data type date is invalid for argument 1 of isnumeric function.

Fazit

Mein Fazit: Die Funktion isNumeric ist mit Vorsicht zu geniessen. Wenn sie eingesetzt wird, dann muss man sehr gut testen. Insbesondere muss sichergestellt werden, dass nie ein Parameter vom Datentyp date an die Funktion übergeben wird. Dann nämlich knallts und ein Fehler wird geworfen.  Falls SQL Server 2012 oder höher eingesetzt wird, gibt es hier eine Empfehlung immer TryParse anstatt isNumeric einzusetzen.

 

 

Vortrag am 2.12.2015: Entwickeln von IoT (Internet of Things) Lösungen mit Microsoft Azure

Die MSUGS (Microsoft Solutions User Group Switzerland) veranstaltet am 2.12.2015 einen sehr interessanten Vortrag über das Thema IoT (Internet of Things) auf Basis von Microsoft Azure.

Marco Amhof und Andrija Sisko zeigen am Beispiel von drei verschiedenen Sensoren wie man Sensorwerte sammeln und in PowerBI visualisieren kann. Dazu verwenden sie die Frameworks aus Microsoft Azure.

Marco arbeitet seit über 14 Jahren bei Trivadis als Consultant in Kundenprojekten, die mit Microsoft Technologie umgesetzt werden. Schwerpunkte sind Anwendungsentwicklung und Business Intelligence basierend auf den Technologien und Frameworks Microsoft SQL Server, Microsoft .NET und Microsoft Dynamics XRM.

Andrija arbeitet seit 4½ Jahren bei Trivadis als .Net Consultant in der Application Development Unit. Seine Schwerpunkte liegen in den Bereichen Serverseitige Programmierung, ASP.NET MVC, Microsoft SQL Server, Microsoft Entwicklungswerkzeuge (Visual Studio, TFS) und Performance Analyse/Management.

Sei dabei bei diesem spannenden Vortrag wo IoT konkret wird. Weitere Details zum Programm und zur Anmeldung findest Du hier auf der Homepage der MSUGS.

Kanban Board mit JIRA

Ein physisches Kanban Board ist grundsätzlich immer zu empfehlen. Was aber tun, wenn die Mitarbeiter des Projektes nicht am gleichen Ort arbeiten. Oder wenn Kollegen mitarbeiten, die mehrere örtlich verschiedene Arbeitspätze haben? Dann empfiehlt sich eine Online Applikation wie z.B. Trello oder Jira. Im Folgenden beschreibe ich kurz, wie man eine Kanban Board mit JIRA aufsetzen kann.

Step 1: Projekt erstellen

  1. Menü: Projects / Create Project
  2. Im Dialog „Agile Kanban“ auswählen.
  3. Dem Projekt einen Namen und Key geben z.B. „Mein Kanban Projekt“ und „MKP“.

Das Projekt ist jetzt angelegt, das Kanban Board wird angezeigt. Es wird der GreenHopper Simplified Workflow benutzt. Die Tasks lassen sich per Drag & Drop auf dem Board verschieben.

Step 2: Anpassen des Kanban Boards

  1. Auf den Button mit dem Zahnrad (Administration) klicken / Configure
  2. Jetzt wird das GUI „Configure <project name>“ angezeigt. Hier auf den Tab „Columns“ klicken. Rechts werden zwei Buttons angezeigt: „Add Status“ sowie „Add Column“. Sollte „AddStatus“ nicht angezeigt werden, so haben Sie vermutlich zu wenig Rechte. Wenden Sie sich dann an den Administrator und lassen sich für Ihr neu erstelltes Projekt mehr Rechte geben.
  3. Initial werden drei Spalten angezeigt:
    a) Todo
    b) In Progress
    c) Done
    Diese sind mit den vordefinierten Standard Status verknüpft:
    Jira_Default_Board
  4. Nun kann man mit dem Buttons „Add Status“ und „Add Columns“ die entsprechenden Spalten hinzufügen. Wenn man den Status und Spalten die gleichen Namen gibt, werden diese auch gleich automatisch gemappt. Überflüssige Status lassen sich auch löschen oder umbenennen.Nach dem Hinzufügen ist es sinnvoll, die Reihenfolge der Spalten anzupassen.
  5. Da sich in Jira eine Spalte nicht in „DOING“ und „DONE“ aufsplitten lässt, habe ich dafür eigene Status/Columns erstellt. Hier die Liste meiner Spalten (diese kann von Projekt zu Projekt verschieden sein und kann auch nachträglich angepasst werden):
    1. Backlog
    2. Next
    3. Analysis DOING
    4. Analysis DONE
    5. Dev DOING
    6. Dev DONE
    7. Test DOING
    8. Test DONE
    9. Ready for Release
    10. Done
  6. Sobald die Spalten aufgesetzt sind, sollte man noch das WIP Limit (Max) pro Spalte definieren
  7. Auch das Arbeiten mit Swimlines wird von JIRA resp. Greenhopper unterstützt. Hierzu habe ich auf den Tab „Swimlanes“ geklickt und „Base Swinlandes on Stories“ ausgewählt.

Step 3: Erstellen von Tasks

Jetzt sind wir mit der Anpassung des KANBAN Boards fertig und können anfangen Issues zu erfassen. Damit die Tasks gleich der richtigen Story zugeordnet werden, empfehle ich wie folgt vorzugehen:

  1. Erstellen einer Story mit dem Button „Create issue“ in der Menüleiste. Als Issue Type unbedingt „Story“ auswählen.
  2. Sobald die Story erfasst ist, zum Issue Navigator wechseln und die entsprechende Story auswählen. Dann kann man mit einem Klick auf den Button „More“ den Befehl „Create Sub-Task“ auswählen und den Task erfassen. Der Task wird nun automatisch auf dem Kanban Board in der Swimlane der zugehörigen Story einsortiert und angezeigt. Cool!

Vortrag: Optimierung der IT-Infrastruktur mit Office 365 und Azure

Am Donnerstag, 23. April 2015, 17.30 Uhr findet in Aarau ein Vortrag zum Thema „Optimierung der IT-Infrastruktur mit Office 365 und Azure: Zukunftsorientiert, umfassend und kosten-günstig“ statt. Der Vortrag ist kostenlos. Details siehe PDF-Dokument: Einladung_OdA_Event_20150423

Ort: Kantonale Verwaltung Aargau, Buchenhof Entfelderstrasse 22, 5000 Aarau, Sitzungszimmer AARE

AGENDA
17.30 Uhr – Empfang
18.00 Uhr – Event
– Optimierung der IT-Infrastruktur
– Demo OdA GS Aargau O365 / Lync
– Azure / SharePoint online inkl. Demo
– Neue Welt des Arbeitens

ab 19.45 Uhr
– Apéro und Ausklang
– Austausch mit den Referenten und Networking

ANMELDUNG BITTE BIS ZUM 21.4.2015 BEI:
rbestaendig@bluewin.ch

Die OdA GS Aargau (Organisation der Arbeitswelt für Gesundheits- und Sozialberufe) reduziert mit der Migration in die Azure-Cloud & Office 365 ihre IT Kosten um 53%! Trotz dieser massiven Kostensenkung stehen mehr Möglichkeiten zur Verfügung. An diesem Event zeigt Andrea Traber (Geschäftsleitungsmitglied der OdA GS Aargau) auf, wie die Ausgangslage vor dem Projekt ausgesehen hat, was die Überlegungen für diesen Schritt waren und wie sie jetzt arbeiten.

Meinrad Weiss und Simon Amrein von der Trivadis AG wird im Anschluss ein paar technische Details und die Herausforderungen aufzeigen, bevor sie Zukunftsvisionen erläutern und diese in einer kurzen Demonstration präsentieren. Weiter wollen wir die neue Welt des Arbeitens mit einem spannenden Referat von Lukas Gillioz, Solution Spezialist Cloud, aufzeigen.

 

 

Was ist Kanban in der IT – und was ist es nicht? (Teil 1)

Ist Kanban eine Softwareentwicklungs-Methode, ein Prozess, ein Framework oder eher eine Projektmanagement-Methode? Ist Kanban eine Alternative zu Scrum? Wie kann ich das einordnen?

Diese und andere Fragen beschäftigen mich seit längerem, dieser Artikel soll helfen, einige der Fragen zu beantworten.

Kanban ist ursprünglich eine Technik aus dem Toyota-Produktionssystem und dient der Selbststeuerung der Material- und Produktflüsse nach dem Hol-Prinzip. David Anderson griff diese Idee für die IT Branche auf und entwickelte sie weiter. 2007 veröffentlichte er sein Konzept auf mehreren Konferenzen, er gilt somit als Begründer von Kanban (für „Wissensarbeiter“).

  • Kanban ist eine evolutionäre Changemanagement Methode, welche mit kleinen Schritten zur Verbesserung eines bestehenden Prozesses führt. Diese vielen kleinen Verbesserungsschritte werden „Kaizen“ genannt, ein Begriff aus dem Japanischen. Man spricht auch vom kontinuierlichem Verbesserungsprozess resp. Continuos Improvement.
  • Kanban ist ein Pull-System (Hol-Prinzip): Das bedeutet, dass neue Aufgaben nicht in das System gedrückt werden (push), sondern, dass neue Aufgaben hineingezogen werden, sobald das System die Kapazität dafür hat.
  • Kanban beschränkt die Anzahl der parallelen Arbeiten, d.h. der Work in Progress (WIP) wird begrenzt. Man spricht auch von WIP-Limits.
  • Kanban selbst ist keine agile Methode, Kanban kann uns aber helfen eine agile Methode einzuführen.
  • Man könnte Kanban als Meta-Methode ansehen, welche mit anderen Vorgehensmodellen z.B. Wasserfall, Scrum, RUP (Rational Unified Process) kombiniert werden kann. Es ist also möglich, mit dem gerade existierenden Prozess zu starten und Kanban einzuführen!

Was ist Kanban nicht?

Kanban ist keine Softwareentwicklungs-Methode, kein Framework und es ist kein Prozess.

Ziele von Kanban

Mit Kanban soll eine nachhaltige Arbeitsgeschwindigkeit bei hoher Qualität erreicht werden. Optimierung der Durchlaufzeit anstatt der Optimierung der Auslastung. Verbesserung des bestehendes Prozesses in vielen inkrementellen Schritten. Mit Kanban sollen Aufgaben vor allem abgeschlossen und nicht nur angefangen werden. Alle Aufgaben der Wertschöpfungskette sollen visualisiert werden, hierdurch wird der bestehende Arbeitsprozess für das Team transparent gemacht. Engpässe und Probleme sollen aufgedeckt und gelöst werden, Durchlaufzeiten sollen vorhersagbar werden.

Die vier Grundprinzipien von Kanban

  1. Starte dort, wo Du gerade bist.
  2. Komme mit den anderen überein, dass inkrementelle, evolutionäre Veränderungen angestrebt werden.
  3. Respektiere den bestehenden Prozess, Verantwortlichkeiten und Titel.
  4. Fördere Leadership auf allen Ebenen.

Das vierte Grundprinzip ist erst später hinzugekommen. Leadership gibt es auf allen Ebenen. Mit Leadership ist hier nicht Führung gemeint, sondern vielmehr Leadership im Sinne von John P. Kotter:

Manager sind eher Verwalter, Leader dagegen Visionäre. Management steht eher für das perfekte Organisieren der Abläufe, planen und kontrollieren. Leadership bedeutet dagegen, die Geführten mit Visionen zu inspirieren und zu motivieren. Leadership schafft Kreativität, Innovation, Sinnerfüllung und Wandel.

Kurz gesagt: Ein Leader kann jeder sein! Es wäre doch toll, wenn von den Mitarbeitern, welche die Arbeit direkt ausführen, auch die Verbesserungsvorschläge kommen würden.

Kanban Praktiken

David Anderson beschreibt in seinem Buch „Kanban – Evolutionäres Change Management für IT-Organisationen“ die wichtigsten Kanban Praktiken:

  1. Visualisiere den Fluss der Arbeit (Workflow).
  2. Begrenze die Menge der begonnenen Arbeit (Work in Progress).
  3. Führe Messungen zum Fluss durch und kontrolliere ihn.
  4. Mach die Regeln für den Prozess explizit.
  5. Implementiere Feedback-Zyklen
  6. Verwende Modelle, um Chancen für Verbesserungen zu erkennen.

Der fünfte Punkt „Implementiere Feeback-Zyklen“ ist 2012 in Mayrhofen bei einer Konferenz hinzugekommen: Vortrag von David Anderson „How Deep is your Kanban“. Die PDF-Datei des Vortrags ist hier zu finden.

Zusammenfassung

Ich hoffe, ich konnte im ersten Teil meiner Artikelreihe grob erklären, was Kanban für Wissensarbeiter darstellt – was es ist, und was nicht. Ein Kanban Board alleine macht noch kein Kanban aus, dazu gehört mehr (z.B. WIP-Limits, Serviceklassen, Metriken, Exit-Kriterien).

In den nächsten Artikeln zu Kanban möchte ich über folgende Inhalte schreiben:

  • Organisation und Aufbau des Kanban Boards
  • Soll ich ein physikalisches Kanban Board verwenden oder lieber Software Kanban Board? Was ist, wenn die Teams örtlich verteilt sind? Welche Tools gibt es?
  • Wie starten wir mit Kanban?
  • Welche Service Klassen gibt es?
  • Begrenzung der angefangenen Arbeit mit WIP-Limits
  • Personal Kanban
  • Communitiy und Konferenzen rund um Kanban
  • Metriken wie z.B. WIP-Tracking mit dem Cumulative Flow Diagram, Durchlaufzeit, Termintreue, Durchsatz, Fehlerrate