Category: "Trivia"

Tales from “certification-hell”: What an MCM, MCA, MCSM, MCSM Charter Member, MCSE or MVP really is / Geschichten aus der Zertifizierungs-Hölle: Was ein MCA, MCSM, MCM, MCSM Charter Member, MCSE oder MVP wirklich ist

 

(DE)
2 Jahre ist es her, dass Microsoft das Ende des Master-Programms angekündigt hat. (Microsoft Certified Master & Architect (MCM & MCA) – The End of Advanced Certification. – And a planned new beginning?)

Aber damit ist die Zertifizierung nicht „tot“ oder gar „wertlos“, wie oft falsch zitiert.
Ganz im Gegenteil: sie ist fast noch wertvoller, denn nur, wer es bis zum 31. Dezember 2013 durch alle Prüfungen schaffte, kann sich heute MCM oder gar MCSM nennen.
Was „tot“ ist, ist das „Programm“, der Zertifizierungspfad mit den Prüfungen und eben der Möglichkeit das Zertifikat zu erhalten.

Da ich über die letzten Jahre immer wieder gefragt wurde, was eigentlich ein MCSM ist oder auch ein „Charter Member“ und wie der MVP da mitspielt, möchte ich dies hier einmal versuchen zu erklären. Für die unlogischen Hintergründe bin ich allerdings nicht verantwortlich – das lag ganz in der Hand von Microsoft Learning.

(EN)
It has been two years since Microsoft announced the end of the Master program.  (Microsoft Certified Master & Architect (MCM & MCA) – The End of Advanced Certification. – And a planned new beginning?)

But that does not mean that the certification is “dead” or even “valueless,” as has often been mistakenly referred to.
Quite the contrary: it is almost more valuable because only those who made it through all the exams by 31 December 2013 may call themselves MCM or even MCSM today.
What is “dead,” then, is the “program” – the certification track with the exams, and thus the possibility to obtain the certificate.

As I have been repeatedly asked over the course of the last years what an MCSM actually is, or a “Charter Member,” and how the MVP fits in there, I would like to try to elaborate on it here. Only I am not responsible for the illogical backgrounds – this was all Microsoft Learning.

Werfen wir einen Blick auf die Zertifizierungspyramide, wie sie noch lange Zeit bei Microsoft Learning online zu finden war:

Let’s take a look at the certification pyramid as it had been available at Microsoft Learning online for a long time:

 

 Microsoft-Certification-MCSA-MCSE-MCM-MCSM

Das Schöne an dieser Übersicht, ist, dass es auch noch den „alten“ Pfad „MCTS-MCITP-MCM“ zeigt.
Diese hier erste Zertifizierungsreihe wurde aufgrund der Entwicklung zur Cloud hin mit Erscheinen von Windows Vista, Windows Server 2008 und für SQL Server Version 2012 durch den neuen Pfad „MCSA-MCSE-MCSM“ abgelöst.

Very conveniently, it still includes the “old” track “MCTS-MCITP-MCM.
This first certification series was replaced by the new track “MCSA-MCSE-MCSM” due to the development towards the cloud and the emergence of Windows Vista, Windows Server 2008, and for SQL Server Version 2012.

 

MCM_SQL_Server_MCSM_Data_Platform

 

Damit ist also der Unterschied vom MCM zum MCSM gelöst:

Der MCSM ist ebenso wie der MCM die höchste technische Zertifizierung von Microsoft, aber für die neueren Server-Systeme.

Für SQL Server nennt sich der MCSM, der auf SQL Server 2012 erworben werden konnte damit auch: Microsoft Certified Solutions Master: Data Platform (hier kann man das offizielle Data Sheet dazu einsehen)

Den MCM, Microsoft Certified Master SQL Server gab es für SQL Server 2005 und SQL Server 2008.
(hier kann man das offizielle Data Sheet dazu einsehen)

Hence this explains the difference between MCM and MCSM:

The MCSM is, just like the MCM, the highest technical certification of Microsoft, but for the recent server systems.

For SQL Server, the MCSM that could be obtained on SQL Server 2012 is thus also called: Microsoft Certified Solutions Master: Data Platform (see the official data sheet here).

The MCM, i.e. Microsoft Certified Master SQL Server was available for SQL Server 2005 and SQL Server 2008 (see the official data sheet here).

Was ist bei den Prüfungen zum MCM & MCSM anders als zum MCSE und MCSA?

Für die Standard-Zertifizierungen legt man eine Reihe an Multiple-Choice-Examen ab. Die genauen Prüfungen kann man hier nachlesen: MCSE: Data Platform

Für den MCM und auch den MCSM war eine weitere („weitere“, da eine bestehende MCITP-Zertifizierung Voraussetzung war) sogenannte „Wissens-Prüfung“ erforderlich, die ebenfalls im Multiple-Choice-Format war. Allerdings waren die Fragen hier deutlich komplexer und praxisnäher.
Der entscheidende Unterschied aber ist, dass für den Master eine praktische Prüfung, das „Lab-Exam“ erforderlich war. Diese wurde an einem Terminal mit Zugriff auf eine echte SQL Server Umgebung durchgeführt, auf der dann diverse Probleme innerhalb einer vorgegebenen Zeit zu lösen waren.

Für den MCM SQL Server 2008 waren 5 Stunden und 25 Minuten angesetzt.
Für den MCSM auf Basis SQL Server 2012 gab es mehr Aufgaben in 7 Stunden zu lösen.
- genaueres darf ich leider nicht schreiben.

Leider konnte man die Prüfung zum MCSM: Data Platform erst ab September 2013 ablegen.
Insgesamt 7 Experten weltweit haben diese Möglichkeit erfolgreich genutzt.

How do the exams for MCM & MCSM differ from those for MCSE and MCSA?

The standard certifications are preceded by a series of multiple-choice exams. You can read  the exact exams here: MCSE: Data Platform

The MCM as well as MCSM required an additional (“additional” because an existing MCITP certification was prerequisite), so-called “Knowledge-Exam,” equally in multiple-choice format. However, the questions here were significantly more complex and practical.
The decisive difference, though, is that the Master required a practical exam, i.e. the “Lab-Exam.” This exam was carried out at a terminal with access to a real SQL Server environment at which various problems were to be solved within a specified time period.

For the MCM SQL Server 2008, the allotted time was 5 hours and 25 minutes. For the MCSM on the basis of SQL Server 2012, tasks had to be solved within 7 hours. – I am not allowed to be more specific here.

Unfortunately, it was only from September 2013 onwards that it was possible to pass the exam for MCSM: Data Platform.
In total, seven experts world-wide have successfully taken this opportunity.

Und damit hoffe ich auch dargelegt zu haben, warum die MCM und erst recht die MCSM Zertifizierung nicht wertlos ist: Eine der ursprünglichen Gedanken für das Master-Programm war es, so zu prüfen, dass man sichergehen konnte, dass derjenige, der besteht, damit echte praktische Erfahrung beim Lösen komplexer Probleme mit SQL Server nachgewiesen hat. Und diese geht ja nicht verloren. Wer Erfahrung mit SQL Server 2005 Datenbanktuning, Desaster Recovery etc. hat, kann auf diese auch unter neueren Versionen zurückgreifen.
Was natürlich für alle Produktzertifizierungen gilt, ist, dass die neuen Features damit nicht unbedingt auf dem Level bekannt sein müssen.

That said, I hope this explains why the MCM certification is not valueless, and certainly not the MCSM certification: One of the original ideas for the Master program was to examine in such a way that one could be sure that the examinee who passed thus proved true practical experience in solving complex problems with SQL Server. And this experience does not get lost. Once you have experience in SQL Server 2005 Database tuning, Desaster Recovery etc. you can also rely on it in more recent versions as well.
What applies to all product certifications is that the new features do not necessarily have to be known at this level.

(Das war für mich persönlich der Grund, auch noch den MCSM hinterherzulegen: um meine Kenntnisse auf SQL Server 2012 mit den damals neuen Features AlwaysOn und ColumnStore damit belegen zu können.

- Und natürlich, um die „Schmach“ der im ersten Anlauf verbockten Lab-Prüfung mit 82% der benötigten Punktzahl (weil ich die falsche Zeitzone im Blick hatte?) wieder gut zu machen.
– Ohne Chance auf Wiederholung am letzten Tag der Prüfungsverfügbarkeit ist mir das ja glücklicherweise auch gelungen :-): MCSM (Microsoft Certified Solutions Master) Data Platform on SQL Server 2012)

(For me personally, this was the reason to also add the MCSM exam right behind: so I could prove my knowledge in SQL Server 2012 with the then new features AlwaysOn and ColumnStore.

– And of course to make up for the “disgrace” of having screwed up the Lab-Exam on the first go with 82% of the required score (because I erred in the time zone?). – And, quite luckily, I was  successful at it – and this with no chance at a retry, as I passed it on the last day the exam was available :-):  MCSM (Microsoft Certified Solutions Master) Data Platform on SQL Server 2012

 

Für den nächsten Punkt muss ich gestehen, dass die obige Pyramide eigentlich nicht ganz vollständig war. Ursprünglich sah sie so aus:

Regarding the next point, I admit that the pyramid shown above was actually not quite complete. Originally, it looked like this:

 
 MCA-MCSM-MCM-MCSE-MCA_Pyramid

 

Was aber ist denn ein MCA?

MCA steht für Microsoft Certified Architect. Dieser Zertifizierung, die an der Spitze der Pyramide stand, war nicht so sehr eine technische, d.h. es wurden keine weiteren Praxis-Prüfungen oder ähnliches durchgeführt. Vielmehr musste der- oder diejenige gegenüber einem Gremium, dem „MCA-Board“, Rede und Antwort zu der Durchführung von realen Projekten mit SQL Server stehen musste. Hierbei ging es nicht so sehr um Technik, dafür war man ja bereits MCM, sondern mehr um die anderen Fähigkeiten wie Teamführung und Konzeption, die man als Architekt eben haben sollte.

Hier schreibt ein MCA dazu: What is a Microsoft Certified Architect?

Deshalb wird der MCM auch oft als die höchste „technische“ Zertifizierung angegeben. Der MCA ist jedoch die uneingeschränkt höchste Zertifizierung von Microsoft.

So what then is an MCA?

MCA stands for Microsoft Certified Architect. This certification, which was at the top of the pyramid, was not so much a technical one – i.e. no further practical exams or the like were carried out. Rather, the examinee was required to answer questions from a committee, the “MCA Board,” on the implementation of real projects with SQL Server. Here, it was not so much about technique – the MCM already covered that part – but rather about other skills such as team leadership and concept competencies.

Read here what an MCA says: What is a Microsoft Certified Architect?

This is why the MCM is oftentimes referred to as the highest “technical” certification. Yet it is in fact the MCA which is the highest Microsoft certification by far and without restrictions.

   MCA_SQL_Server_2005_2008

 

Trivia: Die allererste Runde an MCA’s hatte übrigens noch keine SQL Server Version im Titel, sondern hieß schlicht „MCA: Database“. Davon gibt es insgesamt 26 weltweit. (Und diese Zahl ist wirklich fix, auch wenn nicht alle Namen veröffentlicht wurden.) 2007 wurde aus diesem Titel dann der MCA: SQL Server 2005.

Trivia² In der Zeit des „MCA: Database" gab es noch einen „MCA apprentice“, der den ersten Experten verliehen wurde, die durch das „Ranger“-Programm (der Vorläufer des MCM-Programms) gegangen sind, aber aufgrund ihrer Rolle nicht dem MCA-Board gegenübersitzen konnten – diese wurden anschließend zu MCMs. (Danke an boB Taylor und Assaf Fraenkel für die Internas).

Trivia: The very first round of MCAs did not have any SQL Server Version in the title and was simply called „MCA: Database.“ There are 26 worldwide. (This number is definitely fixed, even if not all names were published.) In 2007, this title became the MCA: SQL Server 2005.

Trivia²: In the “MCA: Database“ era there was an “MCA apprentice” which was awarded to the first experts who made it through the “Ranger” program (the forerunner of the MCM program), but who due to their role could not sit across from the MCA Board – they subsequently became MCMs. (Thanks to  boB Taylor and Assaf Fraenkel for this in-house information.)

5 MCAs für SQL Server halten den MCA sowohl unter 2005 als auch 2008.

Auf SQL Server 2012 gab es keinen MCA mehr zu erwerben.

5 MCAs for SQL Server hold the MCA both for 2005 and 2008.

For SQL Server 2012, there was no more MCA to be obtained.

  MCA_Microsoft Certified_Architect

 

Die letzte, finale und öffentliche Liste der MCAs, MCSMs und MCMs weltweit kann man immer noch hier finden: www.microsoft.com/en-us/learning/mcsm-certification.aspx

Es gilt jedoch weiterhin, dass die Liste und damit Anzahl nicht ganz vollständig ist, denn nicht jeder möchte seinen Namen veröffentlich sehen.
Für SQL Server gibt es demnach weltweit die folgende Anzahl „Mastern“:

The last, final and public list of the MCAs, MCSMs and MCMs worldwide can still be found here: www.microsoft.com/en-us/learning/mcsm-certification.aspx

Note that the list, and hence the number, is still not entirely complete as not everyone wants his name published.
For SQL Server, there is thus the following number of “Masters” worldwide:

 

MCM SQL Server 2005

MCA SQL Server 2005

MCM SQL Server 2008

MCA SQL Server 2008

MCSM Data Platform

33

23 (+3)

172

7 (+1)

7

 

Und da ich diesen Spruch von Brent Ozar, einem MCM-Kollegen aus den USA, so leger fand, hier eine aktualisierte Version davon:

Because I thought this comment by Brent Ozar, an MCM colleague from the US was so casual, here is an updated version:

„Es gibt mehr Menschen, die den Mond betreten haben (12) als es MCSMs für SQL Server 2012 gibt (7).“ :-D

“There are more people who set foot on the moon (12) than there are MCSMs for SQL Server 2012 (7).“ :-D

 

Ja, und dann wäre da noch das „Ding“ da:

Well, and then there is still this „thing“ here:

 

MCSM_Data-Platform-Charter-Member

 

Was ist ein MCSM: Charter Member (Microsoft Certified Solutions Master Charter – Data Platform)?

Diese „Zertifizierung“, wurde allen MCMs zusätzlich zum MCM gegeben. Ohne irgendeine weitere Prüfung oder Voraussetzung. Also letztlich, dem Worte nach, zertifiziert sie: Nichts.


Hart aber wahr: Hier die offizielle Verlautbarung dazu: Existing Microsoft Certified Masters To Receive Microsoft Certified Solutions Master Charter Certification.

Warum macht man so etwas?
Vermutlich war es eine Art „Trostpflaster“ für die Abkündigung der Zertifizierungsreihe.
Ganz ursprünglich war es nur für eine Übergangsphase gedacht, aber nachdem klar war, dass das es den MCSM nicht lange geben würde, wurde der Charter Member auf Dauer vergeben.

(Zusätzlich wurde übrigens auch der MCSE: Data Platform allen MCMs „geschenkt“. - Zu dem Zeitpunkt hatte ich diesen jedoch bereits auf regulärem Wege in der Tasche, so dass ich gar nicht erst in die Versuchung kam, Prüfungen zu skippen :-))

An dieser Stelle kann ich kaum verbergen, das mich jegliches Verbiegen der Nachweiskraft der Microsoft-Zertifizierungen wenig freut.

Leider verwirren diese Aspekte letztlich nur noch mehr in dem Zertifizierungs-Dschungel.

Normalerweise wurde ein „Charter Member“ bis dato für das Erreichen einer Zertifizierung innerhalb der ersten 6 Monate nach dem erstmaligen Erscheinen einer Zertifizierung vergeben. (Quellen: What’s the deal with Charter Member certificates?, https://www.microsoft.com/en-us/learning/program-membership.aspx )
Als Bonus für diejenigen, die sich als Erste an die Prüfungen gewagt und sie bestanden haben. – Diese „First-Achievers“ konnten nämlich keinesfalls bereits auf irgendwelche Braindumps zurückgreifen – und wir wissen ja alle, dass die normalen Prüfungen zu leicht mit allen möglichen Tricks erreichbar sind.
- Ich selber habe bisher 6 Zertifizierungen mit dem Charter-Member Status erreicht (diesen unsinnigen MCSM zähle ich da nicht mit). (andreas-wolter.com/zertifizierungen)

What is an MCSM: Charter Member (Microsoft Certified Solutions Master Charter – Data Platform)?

This “certification” was awarded to all MCMs in addition to the MCM. Without any further exam or prerequisite. Ultimately, accordingly, it certifies: nothing.


Hard but true: Here you can read the official statement: Existing Microsoft Certified Masters To Receive Microsoft Certified Solutions Master Charter Certification.

Why would they do this?

Presumably this was a kind of “consolation” for the discontinuation of the certification series. Initially, it was only intended for a transition period, but after it became clear that the MCSM would not exist for much time the Charter Member was awarded permanently.

(By the way, in addition to that the MCSE: Data Platform was “given” to all MCMs. – At that time, though, I had already obtained this title the standard way so I was not even tempted to skip exams :-)).

At this point, I can hardly disguise the fact that I am not particularly happy about any bending of value of the Microsoft certifications.

Unfortunately, these aspects are ultimately only confusing in the certification jungle. Previously, a “Charter Member” was usually awarded for the achievement of a certification within the first six months after the first appearance of a certification. (Sources: What’s the deal with Charter Member certificates?, https://www.microsoft.com/en-us/learning/program-membership.aspx )
As a bonus for those who were the first to venture on these exams and passed them. – These “First Achievers” were definitely not able to rely on any braindumps – and we are all aware that the normal exams are easily achieved with all sorts of tricks.
– I myself have achieved 6 certifications with the Charter-Member status up to now (and I am not counting the senseless MCSM). (andreas-wolter.com/zertifizierungen)

Im Endeffekt hat das Charter Member-Logo also keinen wertigen Hintergrund. Deshalb verwende ich es auch kaum je irgendwo – wer erklärt schon gerne auf Nachfrage, dass eine Zertifizierung nichts Reelles bedeutet.

At the end of the day, the Charter Member logo does not have a significant background. Therefore, I hardly use it anywhere – for, who would like to explain, when asked, that a certification does not really mean anything.

 

Kommen wir zu einem ganz andern Zertifikat: SSAS Maestro

Let’s turn to an entirely different certificate: SSAS Maestro

Zu dieser seltenen Zertifizierung kann ich weder ein Logo noch eine genaue Zahl an Individuen nennen, die diese halten.
Diese Zertifizierung hatte eine noch viel kürzere Lebensspanne, als der Master. Der Maestro wurde eingeführt, um auch für die Business Intelligence –Seite des SQL Server, speziell den Analysis Services eine entsprechende Premium-Zertifizierung anbieten zu können. Hier die offizielle Ankündigung von damals: What is the SSAS Maestros?
Eine Abkündigung gab es nicht mal.

For this rare certification I can neither give a logo nor an exact number of individuals who hold this certification.
This certification had an even shorter lifespan than the Master. The Maestro was introduced in order to be able to offer a corresponding premium certification for the Business Intelligence part of the SQL Server, particularly the Analysis Services. Here you can read the official announcement of that time:
What is the SSAS Maestros?
There was not even an announcement of discontinuation.

 

Bleibt ein Thema: Der MVP Award

We have one topic left: The MVP Award

 

MVP_Microsoft_Most_Valuable_Professional 

Da kann man berechtigt fragen: „Was hat das hier zu suchen? – Das ist doch gar keine Zertifizierung.
Dem gebe ich Recht. Das ist jedoch nicht jedem bekannt und vor allem ist es dennoch ein gern gesehener Titel auf Konferenzen oder in Projekten, und darum erläutere ich hier kurz, was ein MVP eigentlich ist oder sein sollte.

One is entitled to the question: “What’s this got to do with it? – It is not even a certification!”
I agree. However, not everyone is aware of this, and it is still a welcome title at conferences or in projects. That’s why I will briefly explain what an MVP actually is or is supposed to be.

An dieser Stelle möchte ich gern aus dem Blog eines ehemaligen MVP, Mitch Garvis zitieren:

“Der Microsoft MVP Award ist nicht für Leute, die in ihrer Technologie kompetent sind; er ist für Leute, die ihre Kompetenz mit der Arbeit in der Community teilen, beispielsweise in Blog-Artikeln, als Referent bei Events und Vorträgen, in Tweets, Foren und dergleichen.“
(Quelle: My parting words as a Microsoft MVP)

At this point, I would like to quote from the blog of a former MVP, Mitch Garvis:

“The Microsoft MVP Award is not for people proficient in their technology; it is for people who share their proficiency with community work, such as blog articles, speaking events & presentations, tweets, forums, and such.“
(Source: My parting words as a Microsoft MVP)

Bei Microsoft selber liest es sich wie folgt:

Wer sind MVPs?:

Microsoft Most Valuable Professionals, oder MVPs, sind Führungspersönlichkeiten, die ein vorbildliches Engagement gezeigt haben, anderen durch ihre Erfahrung mit Microsoft-Technologien zu helfen um diese optimal zu nutzen. Sie teilen ihre außergewöhnliche Leidenschaft, Ihr Praxiswissen und Ihr technisches Know-how mit der Community und Microsoft.“

„Wie wird man ein MVP?:

Es gibt keinen Maßstab wie man ein MVP werden kann, weil dies durch die jeweiligen Technologien und ihre Lebensdauer variiert. Folgende Beiträge beurteilen wir während der Bewertungsphase: Beiträge in online-Foren wie Microsoft Answers, TechNet und MSDN; Wikis und online-Inhalte; Konferenzen und Benutzergruppen; Podcasts, Websites, Blogs und social Media; und Artikel und Bücher. Jeder Beitrag eines Kandidaten wird jedes Jahr mit den Beiträgen anderer Kandidaten verglichen, der sich in der gleichen Expertise befindet.“
(Quelle: Microsoft: Most Valuable Professional)

At Microsoft itself it reads as follows:

Who are MVPs?

Microsoft Most Valuable Professionals, or MVPs, are community leaders who’ve demonstrated an exemplary commitment to helping others get the most out of their experience with Microsoft technologies. They share their exceptional passion, real-world knowledge, and technical expertise with the community and with Microsoft.“

“How to become an MVP?

While there is no benchmark for becoming an MVP, in part because it varies by technology and its life-cycle, some of the criteria we evaluate include the impact of a nominee’s activities in online forums such as Microsoft Answers, TechNet and MSDN; wikis and online content; conferences and user groups; podcasts, Web sites, blogs and social media; and articles and books. Each nominee's activities are compared to those of other candidates, and active MVPs receive the same level of analysis as new candidates each year.”
(Source: Microsoft: Most Valuable Professional)

Das bedeutet, es gibt weder ein einheitliches Verfahren, wer diesen Award = „Auszeichnung“ verdient, noch gar eine Prüfung.
Auch fachliche Kompetenz steht hier nicht im Vordergrund und ist niemals der Grund. Für fachliches Wissen gibt und gab es Prüfungen. Auch wenn es seit dem Wegfall des MCM-Programms leider keine Praxisprüfungen mehr gibt – der MVP ist kein Ersatz dafür.

That means there is no standardized procedure as to who deserves this award, nor is there an exam.
Neither are technical skills in the foreground here, and nor are they ever the reason for such an award. For technical knowledge, there are and were exams.
Even if unfortunately there are no longer any practical exams since the discontinuation of the MCM program, the MVP is no replacement.

Zitate wie „Von Microsoft ist er aufgrund seines Fachwissens ausgezeichnet mit dem Titel ‘Microsoft Valuable Professional‘ “ sind daher leider irreführend.

Auch wenn sich unter den MVPs eine Vielzahl an echten Experten findet, ist das nicht das Kriterium. Es gibt viele zertifizierte Master, die nicht die Zeit oder Gelegenheit haben, ihr Wissen kostenlos (auch das ist ein Aspekt) der Öffentlichkeit zugänglich zu machen – oder die tun es, aber die entscheidenden Personen erfahren nicht davon, oder es gibt eine Länderspezifische Quote an maximalen MVPs je Thema, und so weiter, und ergo werden sie nicht mit dem MVP belohnt.

Dann gibt es immer auch die, die seit Jahren schon massiv viel in der Community aktiv sind, auf dutzenden internationalen Konferenzen aufgetreten sind, sogar bereits nominiert worden sind, und dennoch keinen Award erhalten. (Siehe Fälle wie Mark Broadbent)
Und auf der anderen Seite gibt es auch solche, von denen noch fast niemand je gehört hat, und die erst mit dem MVP wirklich bekannt und damit auch gefragt und aktiv werden.  So ähnlich ist es letztlich bei vielen Auszeichnungen. Absolute Fairness wird es nie geben. - Ein Award ist nunmal keine Zertifizierung, und vielleicht sollte man einen solchen manchmal auch nicht so ernstnehmen.
Insofern kann ich mich letztlich glücklich schätzen, dass ich 2014 MVP wurde, nachdem ich bereits seit 2009 auf Konferenzen von Deutschland bis in die USA aktiv bin. (2012 6 Konferenzen, 2013 11, 2014 wurde ich dann MVP)

Quotes such as “He has been awarded the title ‘Microsoft Valuable Professional’ by Microsoft based on his technical knowledge” are thus misleading.

It is true that among the MVPs there are many real experts, but it is not the criterion. There are many certified Masters who do not have the time or opportunity to make their knowledge available to the public for free (this, too, is an aspect) – or they do make it available, but the deciding people do not hear about it, or there is a country-specific quota of a maximum of MVPs per topic, and so on, and therefore they are not awarded the MVP.

On the one hand, there are those who have been extremely active in the community for years, have been presenting at dozens of international conferences, have even been nominated, and still do not receive any award. (See cases like Mark Broadbent)
On the other hand, there are also those of whom almost no one has ever heard, and who only with the MVP actually become known and as a result are in demand and become active. In the end, this is how it goes with many awards. There will never be an absolute fairness. – An award is no certification after all, and sometimes maybe it’s better to not take such all too serious.

Therefore, I can consider myself lucky that I became MVP in 2014 after having been active on conferences in Germany and as far as in the USA since 2009. (6 conferences in 2012, 11 in 2013, and then followed the MVP award in 2014)

Therefore, I can consider myself lucky that I became MVP in 2014 after having been active on conferences in Germany and as far as in the USA since 2009. (6 conferences in 2012, 11 in 2013, and then followed the MVP award in 2014)

MVP, ganz allgemein, kann man werden, wenn man sich sehr für die Community eines Produktes engagiert. Sei es in Online-Foren durch Hilfestellungen, dem Halten von Vorträgen ohne Entgelt auf diversen Konferenzen, umfangreichen Blog-Artikeln oder anderweitigem Engagement, das in irgendeiner Weise der Produktsparte und anderen Kunden hilft. Ein bestimmtes Level an technischer Komplexität ist hier nicht gefordert, mehr die Kontinuität – und die ist, das kann ich aus persönlicher Erfahrung sagen, durchaus zeitaufwändig. Deshalb freue ich mich auch für jeden, der von Microsoft mit dieser Auszeichnung Anerkennung erhält.
Eine Garantie, bei einem bestimmten Umfang so gewürdigt zu werden, gibt es aber nicht, und sich „MVP werden“ als Ziel zu setzen, würde dem ursprünglichen Gedanken bei der Schaffung dieses Awards auch nicht gerecht.

In general, one can become an MVP if you are very active in the community of a product. Be it through assistance in online forums, giving presentations without fee at various conferences, writing comprehensive blog articles, or other forms of commitment that are helpful in some way to the product line or to other clients. This does not require a specific level of technical complexity but rather the continuity – which is, from my personal experience, quite time-consuming. This is why I am happy for anyone who is acknowledged by Microsoft with this award.
However, there is no guarantee to be recognized at reaching a specific amount of commitment. And to set as one’s goal to “become MVP” would not do justice to the original idea behind the award.

Nominierung

Wer jemanden kennt, von dem er meint er hat die Auszeichnung „MVP“ durch seine Aktivitäten in den letzten 12 Monaten (noch ein Kriterium) verdient haben kann ihn hier direkt nominieren: Nominierung als MVP

Nomination

Who knows someone, which he believes he has the deserved to be awarded with the "MVP" by its activities in the last 12 months (another criterion) may nominate him directly here: Nomination as MVP

Expertise

Was ich aus eigener Kenntnis der Master- als auch MVP-Community sagen kann, ist, dass Master in aller Regel eher breiter aufgestellt sind und, wie ja auch in den Prüfungen verlangt, in mehreren Bereichen der Datenbankengine (Beispielsweise Backup & Restore + Indexing + Volltextsuche) sehr versiert sind. Das  Bei MVPs scheint es eine höhere Spezialisierung für genau ein Thema zu geben (Beispielsweise Indexing oder Hochverfügbarkeit). Das ist mein persönlicher Eindruck und durch keinerlei Umfragen oder gar Prüfungen fundiert und soll auch nicht negativ wirken. :-)

Expertise

What I can say from my own knowledge of the Master and MVP community is that Masters usually possess a broader spectrum of technical knowledge and, as required in the exams, they are very well-versed in several areas of database engine (for example Backup & Restore + Indexing + Fulltextsearch). As for MVPs, there seems to be a higher specialization in exactly one topic (For example Indexing or High Availability). This is really my personal impression and not evidenced by any surveys or exams, and it is not meant to sound negative. :-)

Vorteile, des MVP?

Für mich sind das der frühzeitige Einblick in zukünftige Entwicklungen von SQL Server noch lange vor Veröffentlichung und der direkte Kontakt zum Product-Team. Unter NDA, mit relativ geringen Beschränkungen offene Gespräche mit Microsoft-Entwicklern, für mich auch speziell dem Security-Team halten zu können, ist ein unschätzbarer Bonus.

What are the advantages of the MVP?

To me, it is the insight at an early stage into future developments of SQL Server long before its release, and the direct contact to the product team. To be able to have open discussions with Microsoft developers, and in my case especially also the Security team – under NDA and with relatively few restrictions – is an invaluable bonus. 

 

Ich hoffe, ich konnte ein wenig Licht in den Dschungel der Premium-Zertifizierungen von Microsoft bringen. :-)

I hope I was able to shed some light on the jungle of Microsoft’s premium certifications. :-)

 

Happy learning & sharing

Andreas

Maximum number of rows per data page and minimal record size (SQL Server storage internals)

Maximale Anzahl Zeilen je Datenseite und minimale Datensatzgröße

(DE)
In einer meiner letzten Master-Classes tauchte die nicht ganz ernste aber dennoch interessante Fragestellung auf:

Wie viele Zeilen passen eigentlich maximal auf eine Datenseite? – wenn die Datensätze/Records so klein wie möglich sind.

Zunächst, Part 1, was ist der kleinstmögliche Datensatz in SQL Server?

Um das zu beurteilen, ist es gut, die Datentypen sowie die Struktur eines Datensatzes genau zu kennen.
Man könnte versucht sein, anzunehmen, dass eine Spalte vom Datentyp bit der kleinstmögliche Datensatz ist. Der erfahrene SQL‘er wird wissen, dass ein bit allein auch immer mindestens 1 byte in einem Record benötigt – erst bei mehreren Spalten dieses Datentyps, kommt ein Platzersparnis ins Spiel (bit (Transact-SQL)).

Der nächste Kandidat sind Datentypen, die laut der Liste in Books Online nur 1 byte Speicherplatz benötigen. Das wären folgende:

(EN)
In one of my last Master classes, a not quite so serious but nevertheless interesting question was brought up:

How many rows maximally do actually fit on a data page? – if the data sets/records are as small as possible.

First of all, part 1, what is the smallest possible data set in SQL Server?

In order to assess this, it is commendable to know exactly the data types as well as the structure of a data set. 

One could be tempted to assume that a column of the data type bit is the smallest possible data set. The experienced SQL people will know that a bit alone always also requires at least 1 byte in one record – only with several columns of this data type, the place-saving aspect comes into play (bit (Transact-SQL)).

The next candidate are data types which according to the list in Books Online use only 1 byte of storage. These would be the following:

 

  • bit
  • char(1)
  • binary(1)
  • tinyint

 

Tatsächlich benötigen in diesem besonderen Fall, einer einzigen Spalte je Datensatz, auch Records mit Nettowert von 2 Bytes, 9 Bytes auf der Datenseite:

As a matter of fact, in this particular case of a single column per record, also records with a net value of 2 bytes use 9 bytes on the data page:

 

  • char(2)
  • nchar(1)
  • binary(2)
  • smallint

Wie kommt das?
Das liegt an der Struktur der Datensätze. Diese ist hinlänglich in diversen Blogs dokumentiert (z.B. hier Inside the Storage Engine: Anatomy of a record und hier: SQL Server Storage Internals 101 ), jedoch eher für allgemeine Zwecke und dieser Sonderfall (eine 1-byte-Spalte) ist dabei weniger im Fokus.

Theoretisch würden für einen Datensatz 8 Bytes ausreichen:

4 Bytes: Datensatzkopf (Typ + Zeiger auf Null-Bitmap)
1 Byte: Daten
2 Bytes: Anzahl der Spalten im Record
1 Byte: NULL Bitmap

Dazu kommt noch der 2 Bytes große Zeiger im Page-Offset, was dann 10 Bytes ergeben würde.
Dennoch belegt ein solcher Datensatz 9 Bytes auf der Seite/Page + Offset.

Woran das liegt, sehen wir uns an.

How come?
This has to do with the structure of the data sets, which is sufficiently documented in various blogs (e.g. here: Inside the Storage Engine: Anatomy of a record and here: SQL Server Storage Internals 101 ), but rather for general purposes, and this special case (a 1-byte-column) is less focused on here.

Theoretically, 8 bytes would be sufficient for a data set:

4 bytes: data set head (type + pointer to NULL-bitmap)
1 byte: data
2 bytes: number of columns in record
1 byte: NULL bitmap

Add to that the 2-bytes-pointer in the page offset, which would then result in 10 bytes.
Despite this, such a data set uses 9 bytes on the page/page + offset.

We will now look at the reason for this.

Im Folgenden definiere ich 2 Tabellen mit jeweils einer bzw. 2 Spalten von Datentyp tinyint, der ja bekanntlich einen Byte benötigt:

In the following, I am defining 2 tables with one and 2 columns each of the data type tinyint, which is known to use 1 byte:

 

CREATE TABLE T1col
(col1 tinyint null)
GO
CREATE TABLE T2col
(col1 tinyint null, col2 tinyint null)

 

Danach füge ich zuerst Datenätze mit dem Wert „255“ bzw „255, 255“ ein, und danach einige mit Wert „NULL“.

Mit DBCC Page kann man sich den Header der Datenseiten beider Tabellen ansehen, und findet eine kleine Überraschung (Ergebnis reduziert):

Next, I am inserting, first, data set of the value “255” or “255, 255” and then a few of the value “NULL.”

With the DBCC page, one can look at the header of the data pages of both tables, and one will find a small surprise (reduced result). 

 

 DBCCPage_1vs2cols

 

Obwohl die Größe der Daten fixer Länge (pminlen) mit 5 bzw. 6 unterschiedlich angegeben wird, ist der freie Speicherplatz auf der Seite (m_freeCnt) identisch! (rot)

Der Datensatz belegt in beiden Fällen jedoch 9 Bytes im Page-body (blau).

So sieht die Tabelle, bestehend aus einer Spalte, mit einigen Datensätzen gefüllt, auf der Festplatte aus:

Even though the size of the fixed-length data (pminlen) is specified differently, with 5 and 6 respectively, the free storage on the page (m_freeCnt) is identical! (red)

The record, however, uses in both cases 9 bytes in the page body. (blue)

This is what the table, consisting of one column, filled up with a few records, looks like on the hard drive:

 

  Page_Record_1col9byte_hex

 

Man sieht, dass 9 Bytes belegt sind, jedoch nur, da nach der NULL Bitmap noch ein Byte jedem Datensatz anhängig ist (gelb markiert).

Hier die Tabelle mit 2 Spalten:

One can see that 9 bytes are used, but only because after the NULL bitmap, one extra byte is attached to each data set (marked in yellow).

Below, see the table with 2 columns:

 

 1410_Page_Record_2cols9byte_hex.png

 

Auch hier also 9 Bytes, mit dem Unterschied, wie das letzte Byte verwendet wird.

Noch etwas deutlicher wird es im Binärformat. Das ist die Tabelle mit 2 Spalten – auch diese benötigt 9 Bytes, und man sieht unten, wie die NULL Bitmap zu ihrem Namen kommt:

Here, too, it is 9 bytes, with the difference being how the last byte is used.

It becomes a bit clearer in the binary format.
This is the table with 2 columns –this one uses 9 bytes as well, and you can see below how the NULL bitmap gets its name:

 

Page_Record_2cols9byte_binary

 

Dieser eine Byte, der für mich keinen klaren Nutzen hat, führt also zu dem Ergebnis, das beide Tabellen letztlich 9 Bytes je Record auf der Festplatte benötigen.

This one byte, which to me does not have any clear purpose, is what leads to the result that both tables ultimately use 9 bytes per record on the hard drive.

 

Die minimale Datensatzgröße ist daher in der Tat 9 Bytes. Der zweitgrößte Datensatz ist jedoch auch 9 Bytes. :-D

Dabei darf beliebig gewählt werden zwischen 2 Spalten à 1 Byte oder 1 Spalte à 2 Bytes :-)
Daher die Liste:

The minimal record size is thus in fact 9 bytes. The second biggest record, however, is also 9 bytes. :-D

Here, one may freely choose between 2 columns à 1 byte or 1 column à 2 bytes :-).
Hence the list:

 

  • bit
  • char(1)
  • binary(1)
  • tinyint
  • char(2)
  • nchar(1)
  • binary(2)
  • smallint

 

Kommen wir nun zu Part 2:

Wie viele Datensätze passen maximal auf eine Datenseite, wenn wir jetzt wissen, dass jeder Datensatz mindestens 9 Bytes + Offset benötigt?

Let us now look at Part 2:

How many records fit maximally on a data page if we now know that every data set requires a minimum of 9 bytes + offset?

Wir testen mit einer Tabelle, bestehend aus einer Spalte mit Datentyp tinyint – wohlwissend, dass es dasselbe Ergebnis bringen würde, wenn wir smallint oder etwas anderes aus der Liste oben nehmen würden.

We are testing with one table of one column with datatype tinyint – knowing full well that it would have the same outcome if we were to take smallint or something else from the list above.

 

CREATE TABLE T3_Tinyint
(col tinyint NOT NULL)
GO
…Insert 700 Rows…

Sehen wir uns an, wie voll die Datenseite geworden ist, und welche Page_ID diese hat:

Then, we will check again how full the data page has become, and which Page_ID it has:

 

 Row_Per_Page_Stage1_700

 

Ausgehend davon, dass eine Datenseite 8192 Bytes groß ist und abzüglich Header 8096 Bytes für Daten zur Verfügung stehen, bedeutet ein Füllgrad von ~95,107%, das noch gut ~396 Bytes zur Verfügung stehen. Durch 11 ergibt das 36. - 36 Datensätze haben also noch Platz!

Was sagt DBCC Page dazu?

Based on the fact that a data page is 8192 bytes in size and that, less the header, 8096 bytes are available for data, a fill degree of ~95,107% means that some ~396 are still available. Divided by 11 this equals 36 – there is still room for 36 records!

What does DBCC Page have to say to this?

 

 DBCCPage_Row_Per_Page_Stage1_700_Page_Header

 

Auch hier: 396 Bytes frei – na dann war unsere Überschlagsrechnung gar nicht so schlecht. :-)

Das heißt rein rechnerisch müssten weitere 36 Datensätze auf die Seite passen.
Also „rauf damit“.

396 bytes free – well, then, our back-of-the-envelope calculation wasn’t so bad at all. :-)

That is to say that in purely arithmetical terms, a further 36 records should fit on the page.
So “let’s put them on.”

 

…Insert 36 Rows…

 

Row_Per_Page_Stage2_2Pages

 

2 Seiten, direkt ab dem 701. Datensatz.
Was ist da los?
Im Hex Editor betrachten wir „das Grauen“:

2 pages, directly from the 701st data set.
What is going on there?
In the hex editor, we are looking at “the horror”:

 

 Tab_Footer_Offset_FreeSpace_hex

 

Freier Platz! – Fragmentierung, „Igitt“ ;-)
Was machen wir da?
Ein Rebuild der Tabelle, was sonst.

Free space! – Fragmentation, „yuck“ ;-)
What to do?
A rebuild of the table, what else.

 

Row_Per_Page_Stage3_736

 

Und schon ist die Seite zu glatten 100% gefüllt: 736 Datensätze.
Und das sagt der Header:

And just like that, the page is filled with a sleek 100%: 736 records.
And this is what the header says:

 

 DBCCPage_Row_Per_Page_Stage3_736_Page_Header

 

Ja, die Page_ID ist eine andere – aber nicht, weil ich gemogelt hätte, sondern weil die Storage Engine für den Rebuild neuen Platz reserviert, und den alten nach getaner Arbeit freigegeben hat.

Und auch auf Platte sieht es jetzt so aus, wie es sein sollte – bis zum Ende aufgefüllt:

Yes, the Page_ID is a different one – but not because I might have cheated, but because the storage engine allocated new space for the rebuild, and released the old one after the done work.

On the drive, too, it now looks exactly how it’s supposed to – filled up to the end:

 

 Tab_Footer_Offset_Full_hex

 

Übrigens: Wenn ich anstelle der Heap-Speicherung der Tabelle einen Clustered Index als Struktur gewählt hätte, wären die Daten in den allermeisten Fällen sofort auf der einen Seite zu 100% abgelegt worden
– aber was tut man nicht alles für die Spannungskurve :-)

Ansonsten gilt auch hier die Regel: „Niemals auf etwas verlassen, was man nicht selbst getestet hat“ ;-)

By the way, had I chosen a Clustered Index as structure instead of the Heap-storage, in most cases, the data would have been stored immediately to a 100% on the one page
– but what’s the fun in that! :-)

Otherwise, the rule also applies here: “Never rely on something you haven’t tested yourself” ;-)

 

Ergebnis:
Die Antwort auf die Frage lautet daher nicht 700, nicht 732, oder gar 809, sondern: 736 Datensätze passen maximal auf eine Seite.

- und dabei macht es noch nicht einmal einen Unterschied, ob man eine Spalte mit 1 oder 2 Bytes Größe, oder gar 2 Spalten mit je einem Byte Größe verwendet.

Da jeder Datensatz 9 Bytes zzgl. 2 Bytes Record Offset benötigt, haben wir damit die maximale Kapazität einer SQL Server Datenseite mit 8096 Bytes exakt ausgereizt! :-)

- Nicht zu verwechseln mit der maximalen Zeilenlänge von 8060 Bytes.

Result:
The answer to this question, therefore, is not 700, not 732, or even 809, but: a maximum of 736 data records fits on one page.

- and it does not even make a difference, if one uses one column with 1 or 2 bytes in size, or even 2 columns with one byte in size.

Since every data record uses 9 bytes plus 2 bytes record offset we will have exactly exhausted the maximum capacity of an SQL Server data page with 8096 bytes! :-)

- Not to be confused with the maximal row length of 8060 bytes.

 

my nine bytes

Andreas