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.
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:
- Troubleshoot and Optimize (25-30%)
- Create Database Objects (20-25%)
- Modify Data (20-25%)
- 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.
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.
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
- Menü: Projects / Create Project
- Im Dialog „Agile Kanban“ auswählen.
- 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
- Auf den Button mit dem Zahnrad (Administration) klicken / Configure
- 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.
- Initial werden drei Spalten angezeigt:
a) Todo
b) In Progress
c) Done
Diese sind mit den vordefinierten Standard Status verknüpft:
- 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.
- 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):
- Backlog
- Next
- Analysis DOING
- Analysis DONE
- Dev DOING
- Dev DONE
- Test DOING
- Test DONE
- Ready for Release
- Done
- Sobald die Spalten aufgesetzt sind, sollte man noch das WIP Limit (Max) pro Spalte definieren
- 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:
- Erstellen einer Story mit dem Button „Create issue“ in der Menüleiste. Als Issue Type unbedingt „Story“ auswählen.
- 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!
Kostenlose Werkzeuge und Tools für Software-Entwickler
Kostenlose Werkzeuge und Tools für Software-Entwickler
Jeder Entwickler hat seine Lieblingswerkzeuge und Tools, vergleichbar mit dem Werkzeugkasten eines Klempner. So ist es auch bei mir – nachfolgend eine Liste inkl. kurzer Erläuterung der Tools, die ich häufig verwende.
Nr. | Software-Tool | Beschreibung | Link |
---|---|---|---|
1 | NSIS (Nullsoft Sricptable Install System) |
Software zum Erstellen von Windows-Installationsprogrammen. |
http://nsis.sourceforge.net |
2 | 7-Zip | Freies Datenkompressionsprogramm (Packer) |
http://www.7-zip.de |
3 | Notepad++ | Texteditor für Windows | http://notepad-plus-plus.org |
4 | Microsoft Expression Web 4 |
HTML-Editor | http://www.microsoft.com/en-us/download/details.aspx?id=36179 |
5 | Windows Live Writer |
Programm mit dem man offline Blog-Posts schreiben und später veröffentlichen kann | http://windows.microsoft.com/de-de/windows-live/essentials |
6 | Pixel Ruler |
Bildschirmlineal | http://www.pixelruler.de |
7 | Fiddler | Web Debugging Tool | http://www.telerik.com/fiddler |
8 | Virtual Clone Drive |
Anlegen von virtuellen DVD-Laufwerken |
http://www.slysoft.com/de/virtual-clonedrive.html |
Ich werde die Liste von Zeit zu Zeit aktualisieren und hoffe dass für jeden Besucher dieses Blog-Artikels was dabei ist. Ich würde mich sehr über Eure Kommentare freuen – es gibt sicher viele Tools, die ich noch nicht kenne!
Blinde Passagiere auf dem Rechner – Foistware mit Oracle (Java), Adobe & Co.
Heute bin ich über einen neuen Begriff gestolpert: Foistware.
„To foist“ heisst übersetzt anhängen oder unterschieben. Es handelt sich also um Software, die dem Anwender (in der Regel ohne dass er sich dessen bewusst ist) untergeschoben wird. Und das Beste daran ist, er installiert diese Software (also die blinden Passagiere auf dem Rechner) selbst.
Hier die Definition bei Wiktionary: „Software that is installed without the user’s knowledge or consent, often bundled with another product.“
Inzwischen hat das Ganze eine neue Qualität erreicht. Wurde diese unerwünschte Zusatzsoftware oft bei Freeware wie MP3-Konvertern oder Download-Tools für Youtube mit installiert, wird heutzutage bereits bei Updates von Standard-Software wie Java und Adobe Flash Player diese Foistware „untergejubelt“. Wir haben alle gelernt, dass automatische Software-Updates bei Windows, Java etc. durchaus sinnvoll ist. Umso mehr hat mich erstaunt, dass namhafte Hersteller wie Oracle und Adobe auf diesen Zug aufspringen. Wollen diese Hersteller ihren guten Ruf ruinieren?
Ich sehe das sehr skeptisch und hoffe dass diese Vorgehensweise keine weiteren Nachahmer findet (und sich Oracle und Adobe besinnen und damit aufhören). Ich würde gerne meinem Software-Lieferanten vertrauen – aber wenn der Benutzer absichtlich fehlgeleitet wird (ich spreche jetzt vom „Otto Normalverbraucher“) – tritt genau das Gegenteil ein: Misstrauen entsteht.
Wie funktioniert das Ganze? Der Anwender lädt sich eine (meist kostenlose) Software herunter und startet die Installation. Oft wird eine Standard- und eine Experten-Installation angeboten. Wählt man die Standard-Version des Installers, hat man schon verloren: Die mitgelieferte Zusatzsoftware wie z.B. Ask Toolbar, Google Symbolleiste, Registry Cleaner etc. wird – ohne dass man was gemacht hat – vollautomatisch installiert. Und von meinem Bekanntenkreis weiss ich, dass schätzungsweise mindestens 95 % aller PC-Benutzer drauf reinfallen.
Was kann man dagegen machen? Niemals den Standard-Modus sondern immer den Experten-Modus bei einer Installation wählen. Alles genau durchlesen und nur das installieren, was man braucht (also alle unnötigen Häkchen wegnehmen).
Vortrag über Windows Azure Active Directory
Am Mittwoch, 11. Juni 2014 findet ein Vortrag über das Thema Windows Azure Active Directory statt:
- Veranstalter: msusgs (Microsoft Solutions User Group Switzerland)
- Ort: Trivadis, Glattbrugg
- Uhrzeit: 18:30 – 21:00
- Referent: Robert Mühsig
- Kosten: Keine – die Veranstaltung ist kostenlos, es sind auch Nicht-Mitglieder recht herzlich willkommen
- Anmeldung: via msugs-Homepage oder direkt an rbestaendig@bluewin.ch
Robert Mühsig gibt einen Einblick in die Welt von Windows Azure Active Directory – von der Authentifizierung bis zur Graph API. Im Enterprise Bereich ist die Windows-Authentifizierung wohlbekannt und sehr einfach in die eigene Anwendung zu integrieren.
Aber welche Möglichkeiten gibt es denn, wenn man die eigene Applikation in die Cloud auslagert? Was der „Facebook-Login“ für den Consumer-Bereich ist, versucht Microsoft mit dem Windows Azure Active Directory den Business-Bereich abzudecken. In dem Vortrag zeigt Robert, wie man die eigene Anwendung mit dem Azure AD bekannt macht, welche Möglichkeiten es gibt Daten aus dem Azure AD zu beziehen und wie man neue Daten auch hinterlegen kann. Die Art der Anwendung spielt dabei nur eine Nebenrolle – es wird sowohl auf Webanwendungen als auch Web APIs und native Anwendungen eingegangen.
Brandneue, kostenlose(!) E-Books von Microsoft
Auf der Microsoft Virtual Academy Site werden brandneue E-Books von Microsoft zum kostenlosen Download angeboten: http://www.microsoftvirtualacademy.com/ebooks. Die Bücher stehen in den Formaten PDF, EPUB und Mobi (Kindle) zur Verfügung.
Und hier die Liste der angebotenen Buchtitel:
- Introducing Microsoft System Center 2012 R2
- Introducing Windows Server 2012 R2
- Introducing Windows Azure for IT Professionals
- Rethinking Enterprise Storage: A Hybrid Cloud Model
- Introducing Windows 8.1 for IT Professionals
- Programming Windows Store Apps with HTML, CSS, and JavaScript, Second Edition (Second Preview)
- .NET Technology Guide for Business Applications
- Introducing Microsoft System Center 2012 R2
- Microsoft System Center: Designing Orchestrator Runbooks
- Microsoft System Center: Configuration Manager Field Experience
- Microsoft System Center: Cloud Management with App Controller
- Microsoft System Center: Troubleshooting Configuration Manager
- Microsoft System Center: Optimizing Service Manager
Sehr interessant finde ich das Buch .NET Technology Guide for Business Applications, das einem hilft, für eine zu realisierende Applikation die richtige Microsoft-Technologie zu finden. Z.B. ob und wann es Sinn macht, mit HTML5/JavaScript zu programmieren. Oder lieber mit WPF oder Windows Forms etc. Desweiteren gibt sehr viele Informationen und Tipps zur Architektur einer Anwendung sowie hilfreiche Aussagen zu Patterns.
Zitat aus dem Buch:
A single architecture and approach won’t work for every type of application. The Microsoft development stack and .NET are extremely flexible and offer many possibilities, but it’s essential that you choose specific approaches and technologies based on the kind of application—or even subsystem—you build. Each application will have very different priorities and tradeoffs that must be taken on different paths.