Archives for: "August 2013"

Microsoft Certified Master & Architect (MCM & MCA) – The End of Advanced Certification. – And a planned new beginning?
Aug 31st
Microsoft Certified Master & Architect (MCM & MCA) – Das Ende der Advanced Certification. – Und ein geplanter Neubeginn?
|
(de) - Es gibt keinen Neuen. (Oder vielleicht doch? – mehr dazu am Ende.) Heute Morgen, Samstag den 31.8. kurz nach 7, in den USA 10 Uhr Freitagabend vor einem Feiertagswochenende, kam eine Email vom „Advanced Certification Program“ mit dem harmlosen Titel „MCM/MCSM/MCA Program Update“. Und es handelte sich nicht um die lange erwarteten Neuigkeiten, wann man endlich den MCSM für SQL Server 2012 machen kann. Der entscheidende Satz im Zitat: |
(en) – There is no new one. (Or maybe there is? – I’ll get to that at the end of the blog.) This morning, Saturday, the 31st of August, shortly after 7 o’clock – corresponding to a Friday evening at 10 o’clock, just before the national holiday weekend, in the US – I received an email from “Advanced Certification Program” with the harmless title “MCM/MCSM/MCA Program Update.” However, these were not the long anticipated news as to when it was finally possible to do the MCSM for SQL Server 2012. To quote the decisive sentence: |
“Microsoft will no longer offer Masters and Architect level training rotations and will be retiring the Masters level certification exams as of October 1, 2013.”
|
Ja, richtig gelesen. In klarem Deutsch: Ab 1. Oktober es wird keine Möglichkeit mehr geben, die Zertifizierung zum Microsoft Certified Solutions Master (MCSM) oder gar Microsoft Certified Architect (MCA) abzuschließen. (Wer die komplette Email lesen möchte, findet sie am Ende des Artikels.) Das Master- /Advanced Certification Programm ist dann beendet. Update 18.9.13: aufgrund der starken Reaktionen aus der Community, hat Microsoft Learning das Programm doch noch um 3 Monate verlängert: Microsoft Certified (Solutions) Master, MCM/MCSM: Das Rennen geht in die Verlängerung. - Wer wird der letzte MCM SQL Server ;-) ? Der MCM selber hat kein „Ablaufdatum“ – auch, da man in der Regel die Produktversion dazu nannte. „Gnädigerweise“ darf zusätzlich der Titel MCSM Charter Member weiter geführt werden. |
Yes, you read correctly. In other words: As of October 1st, there will no longer be the possibility to pass the certification of the Microsoft Certified Solutions Master (MCSM) or even Microsoft Certified Architect (MCA). (If you would like to read the complete email, please find it at the end of the article.) The Master/Advanced certification program will thus be terminated. Update 18 Sept. 2013: Due to the strong reactions from the community, Microsoft Learning has extended the program by 3 months: Microsoft Certified (Solutions) Master, MCM/MCSM: The race is extended. – Who will be the last MCM SQL Server ;-) ? The MCM itself has no “expiration date” – also due to the fact that one would usually add the product version to the title. “Thanks to grace,” one may continue holding the additional title MCSM Charter Member. |
„As a Microsoft Certified Master, Microsoft Certified Solutions Master, or Microsoft Certified Architect, you have earned one of the highest certifications available through the Microsoft Certification program. Although individuals will no longer be able to earn these certifications, you will continue to hold the credential and you will not be required to recertify your credential in the future.”
|
Oder, um es Robert Davis, den vorherigen Manager des MCM Programmes bildlich zu zitieren: |
Or, to visually quote from Robert Davis, the former MCM program manager: |
|
Der martialische Look ist natürlich nicht so ernst zu nehmen ;-) Als Architekt für Datenbanksysteme und selber MCM für SQL Server 2008 (also der 2. und zugleich letzten Version, für die es diesen Titel gab), kann ich meine Enttäuschung über diese Entscheidung nicht verleugnen. Zumal sie völlig aus der Kalten kam. So wurde erst Mitte August die Anzahl der Test-Center erhöht(!). |
Of course, the martial look is not to be taken so seriously ;-) Being a database system architect and MCM for SQL Server 2008 myself (thus the second and simultaneously last version available for this title), I cannot deny my disappointment in this decision. Also because it came completely out of the blue. In fact, just in mid-August, the number of test centers had been increased (!). And it was exactly 3 months ago that I was trying to make the MCSM more known through my blog (“Survey about the Microsoft Certified Master (MCM) certification, training opportunities and interview”), and now I am supposed to announce the end. I think it is legitimate to be slightly frustrated.
|
|
Microsoft-Zertifizierungenen heute Ich war immer der Meinung, und bin es noch, das die bestehenden Zertifizierungen, die Microsoft vergab, aufgrund vielfältiger Gründe, die Spreu nicht vom Weizen trennen konnten. Ursache hierfür ist zum einen die weit verbreitete Methode, sich mittels Brain-Dumps die Prüfungsinhalte vorab genau anzusehen und auswendig zu lernen. Und zum anderen sogenannte „BootCamps“; meist hochpreisige Seminare wo Teilnehmer innerhalb einer Woche genau den Stoff eingetrichtert bekommen, der für eine jeweilige Prüfung notwendig ist. Und innerhalb von 2-3 Wochen hat man dann ein Zertifikat erreicht. Einer der bekanntesten Anbieter dieser Methode ist Firebrand. (Ich habe mich verweigert, meinen MCT + MCM-Titel für diese Trainings zu stellen.) Jeder, der sich einmal die Beschreibungen zu den Zertifizierungslevels angesehen hat, wird wissen, dass sich unter den empfohlenen Voraussetzungen immer eine Jahreszahl > 1 in der praktischen Erfahrung mit der jeweiligen Technologie befindet. Es ist also per se unseriös, diese Zertifizierungen „mal eben so zu machen“. Daraus ergab sich das geflügelte Wort „MCSE: Microsoft Consultant Searching Experience“ und ähnliche Übersetzungen. Als das entstanden ist, gab es gerade die „Inflation“ an MCSE’s um Windows Server 2000 herum. Nun haben wir das Akronym MCSE wieder mit einer neuen Bedeutung (Microsoft Certified Solutions Expert). Auch wenn die Prüfungen der neuen Generation tatsächlich deutlich schwieriger sind, als noch für die MCITP’s, so ändert das leider nichts an deren Anfälligkeit gegenüber den oben genannten Methoden. Dazu kommen extreme (aber nicht seltene Fälle), wo Prüfungen komplett gefaked oder von anderen durchgeführt werden. Dafür ist die Dunkelziffer naturgemäß sehr hoch. Mit der Materie vertraute, werden diese Dinge jedoch bestätigen können. All das trägt entsprechend zur Abwertung der Zertifizierungen bei. – Die Leidtragenden sind wie immer die, die es ernst nehmen und wirklich praktische Erfahrung sammeln oder sich in echten Deep-Dive Trainings & Workshops weiterbilden, anstelle von „Antworten Pauken“. Als Gegenpol zu diesen Breitenangeboten habe ich vor einiger Zeit zum Beispiel begonnen, die SQL Server Master-Classes auszuarbeiten – vorrangig praxisorientierte und weit in die Interna von SQL Server gehenden Trainings -, wie es Sie auf dem offenen deutschen Markt bislang kaum gibt. – Weshalb ich seinerzeit selber auf Angebote zu Master-Level Classes aus und in den USA zurückgriff.
|
Microsoft certifications today I have always held the opinion, and still do, that due to manifold reasons the existing certifications awarded by Microsoft were not able to separate the wheat from the chaff. This can be accounted, for one, to the widespread method of checking out the exam materials using brain dumps and memorizing them beforehand. And on the other hand, it can be accounted to the so called “Boot Camps”; mostly upscale seminars where study materials required by a particular exam are being drummed into the participants in one week’s time. Within 2-3 weeks, one will have achieved the certificate. One of the best known providers of this method is Firebrand. (I have refused to offer my MCT and MCM title for these trainings.) Whoever has looked at the descriptions of the certification levels before will know that among the recommended requirements there is always a number of years >1 of practical experience with the respective technology. It is thus inherently frivolous to do these certifications “hands down.” Thus arose the dictum “MCSE: Microsoft Consultant Searching Experience” and similar translations. At the time when it was created, there was just an “inflation” of MCSEs around Windows Server 2000. Now, we have the acronym MCSE with yet another meaning (Microsoft Certified Solutions Expert). Even if the exams of the new generation are in fact significantly more difficult than those for the MCITPs, this will not, I am afraid, change their vulnerability to the methods stated above. Moreover, there are extreme (but not rare) cases in which exams are completely faked or carried out by someone else. The dark figure for these cases is by nature very high. Those familiar with the topic will confirm these issues. All of this correspondingly adds to the devaluation of these certifications. – In the end, it is those who take it seriously and actually gain practical experiences or educate themselves further in real deep-dive trainings and workshops instead of “drilling answers” who suffer from this. As an antipole to these common offers, for example, I have started to work out the details of the SQL Server Master classes some time ago. These are trainings primarily based on practice and diving deep into the SQL Server, and are scarcely available on the open German market up to now. – Which is why I myself accessed the offers of Master level classes from and in the USA at the time.
|
|
MCSE – die neue Top-Level Zertifizierung anstelle des MCSM? Wo für einen MCITP/MCSE eine Erfahrung von 4-6 Jahren als Mindestmaß angegeben wird, so lag es für den MCM/MCSM eben bei 10 Jahren. Braindumps: Fehlanzeige (Das war übrigens ein Grund auch für die hohen Prüfungskosten.) Dass die Examen für den MCSE bei weitem nicht an den MCM heranreichen, ist denke ich doch hinreichend bekannt. Dazu habe ich auch in meinem Blog-Artikel vom Juni schon geschrieben. Auch wenn ich mit Sorge betrachtet habe, wie das MCM/MCSM-Programm in den letzten Monaten weiter aufgeweicht wurde (verkürzte bis gar keine Wartezeiten für Retakes), ist es dennoch die einzige Microsoft-Zertifizierung, für dessen Prüfung ein echter praktischer Nachweis des Könnens - und eben nicht nur theoretischen Wissens - erbracht werden musste. Eben weil man praktisches Können nicht zwingend neu „beweisen“ muss, wenn man es einmal hat, gilt der MCM (im Gegensatz zu dem Geplanten MCSM) als eine Nicht-Ablaufende Zertifizierung. Zwei bis drei Releases von heute an, wird der Titel aber möglicherweise völlig unbekannt sein – wenn er nicht ein „Revival“ erlebt. |
MCSE – the new top-level certification instead of the MCSM? When for a MCITP/MCSE a 4-6 year experience is noted as a minimum, it was 10 years for the MCM/MCSM. Brain dumps: negative report. (By the way, this was another reason for the high exam costs.) I suppose it is sufficiently known that the exams for the MCSE do not approximate the MCM by far, which I have already written about in my blog article from June. Even if I have been observing with concern how the MCM/MCSM program was further softened in the past months (shortened to no waiting time for retakes), it is still the only Microsoft certification for the exam of which a real practical proof of one’s skills – not just theoretical knowledge – had to be performed. And just because one does not necessarily need to “re-prove” practical skills once you have acquired it, the MCM is valid as a certification without expiration (contrary to the planned MCSM). Two to three releases from today, and the title will possibly be completely unknown – unless it experiences a “revival.”
|
|
Nach der einzigen öffentlichen Liste, die es gibt, gibt es derzeit 121 Microsoft Certified Master für SQL Server 2008 weltweit, davon 7 in Deutschland, und davon wiederum 5 bei Microsoft oder der Microsoft-Tochter Avanade. Wie viele sich an der Zertifizierung vergeblich versucht haben.. man wird es nie erfahren… An dieser Zahl wird sich also vermutlich nichts mehr ändern, auch wenn das offizielle „Beendigungsdatum“ des Programmes am 1. Oktober ist. Aber wer weiß. "Letzte Chance", für alle, die "mit dem Gedanken spielten“. Leid tut es mir für alle, die das Zeug und den Ehrgeiz für diese Zertifizierung gehabt hätten. Aber für echtes Know-How und praktische Erfahrung gibt es immer Bedarf. Deswegen sollte man nicht weniger in seine eigenen Fähigkeiten investieren. Ob zertifiziert oder nicht. Vielleicht gehört die Zukunft für Fortgeschrittene Zertifizierungen auch den herstellerunabhängigen Zertifizierungen.(?) Genaue Gründe für die Abkündigung sind uns, liebe Leser, übrigens auch nicht mitgeteilt worden, wenn Sie diese hier vermissen. Im Oktober auf dem PASS Summit in Charlotte/USA wird das sicherlich ein heißes Thema unter uns „letzten MCMs“ sein.
|
According to the sole existing public list, there are currently 121 Microsoft Certified Masters for SQL Server 2008 worldwide, 7 of whom in Germany, of whom 5 are at Microsoft or the Microsoft subsidiary Avanade. How many have unavailingly tried themselves at the certification will remain unknown… This number is unlikely to change even though the official “termination date” of the program is October 1st. But who knows. “Last chance” for all those who “played with the idea.” I am sorry for those who would have had the skills and ambition for this certification. Yet, there will always be demand for true know-how and practical experience. Therefore, one should not invest less in one’s own skills. Whether certified or not. Maybe the future for advanced certifications will also belong to manufacturer-independent certifications. (?) Exact reasons for the discontinuation were not announced to us, in case you, dear reader, were missing them here. At the PASS Summit in Charlotte/USA in October 2013, this will doubtless be a hot topic among us, the “last MCMs.”
|
|
Es gilt, wie immer: Wenn eines konstant ist, dann ist es die Veränderung. Das Ende des MCM-Programms ist nicht das Ende allen Lernens. Praktisches Wissen & Reputation ist wichtiger als Zertifikate. In diesem Sinne: viel Erfolg beim Lernen und praktizieren – denn es gibt noch genügend andere Möglichkeiten, den Unterschied zu machen.
|
One thing will always be true: If something is constant, it is change. The end of the MCM program is not the end of all learning. Practical knowledge and reputation are more important than certificates. In this spirit: good luck with the studying and practicing. There are still plenty of other opportunity to make a difference.
|
|
Update 1.9.: Bei Microsoft Connect wurde ein Feedback-Item gestartet, um den MCM & MCA für SQL Server zu erhalten. Zahlreiche, teilweise wütende, Kommentare zeigen wie aufgebracht die Community wegen dieser Entscheidung ist. Mit mehr als 200 Stimmen am ersten Tag, dürfte das eines der am höchsten votierten Connect Items überhaupt sein.
|
Update Sept. 1: At Microsoft Connect, a feedback item was initiated in order to acquire the MCM & MCA for SQL Server. Numerous, partly enraged, comments show how stirred the community is because of this decision. With more than 200 voices on the first day, this might actually be one of the most voted Connect Item.
|
|
Update 2.9.: > 460 Stimmen für die Weiterführung des MCM Programms. Innerhalb von 3 Tagen ist es zum Nummer 2 Feedback-Item für SQL Server überhaupt geworden! - Auch ein Zeichen wie stark gerade die SQL Community im Vergleich zu allen anderen Produktgruppen ist. Darauf alleine können wir alle stolz sein. Wie Microsoft das sieht, das muss sich wohl zeigen
|
Update Sept. 2: Less than 460 voices in favor of the continuation of the MCM program. Within 3 days, it has become the No. 2 feedback item for SQL Server! – At the same time, an indication of how strong the SQL community is at the moment compared to all other product groups. We can be proud of this. It remains to be seen how Microsoft regards this.
|
|
Update 1.10.: Beim Stand von über 750 Stimmen(!) wurde das Connect Item am 6.9. auf Wunsch von Jen Stirrup, die dieses auch geöffnet hatte, geschlossen. Grund waren einige direkte und persönliche Angriffe auf Mitglieder der Community. Das ist sehr bedauerlich, da diese wenigen damit der MCM Community als Ganzes Schaden. Mehr dazu von ihr selber auch hier: www.jenstirrup.com/2013/09/why-i-asked-microsoft-to-close-mcm.html Ein anonymes Mitglied der Community hat das Item vorab noch mitsamt vieler Kommentare hierhin gespiegelt: bringbackmcm.wordpress.com/
|
Update Oct. 1: At the status of more than 750 (!) voices, the Connect Item was closed on 6 Sept. on the request of Jen Stirrup who had opened the item. This was on account of a couple of direct and personal attacks on community members. This is a shame, as these few ones damage the MCM community as a whole. Read more about it from herself: http://www.jenstirrup.com/2013/09/why-i-asked-microsoft-to-close-mcm.html An anonymous community member has copied the item including many comments before it was closed: http://bringbackmcm.wordpress.com/
|
|
Man kann wohl davon ausgehen, dass mit einem solchen Aufschrei keiner der Entscheider gerechnet hat. Es ist ja nicht so, dass man solche Dinge nicht auch mit längerer Vorwarnzeit angehen könnte. Und hier geht es nicht um "IT Profis", sondern um die Vorreiter und Architekten, die Microsofts Technologien implementieren. Viele haben zigtausende Dollar/Euro/Pfund usw. in Ihre Ausbildung und Jahre in die Vorbereitung gesteckt, dieses Level zu erreichen. Denn wer wird gerufen, wenn Probleme unlösbar erscheinen? Ja, richtig, genau jene MCMs und MCA‘s... - Die Konsequenzen aus dem durch diese Vorgehensweise entstandenen Vertrauensverlust sind möglicherweise noch nicht absehbar, und die Zukunft ja leider im Dunklen.
|
One can presume that none of the decision-makers has anticipated this kind of outcry. It is not like one could not go about such issues with a longer advance warning period. In fact, here, it is not about “IT pros,” but it is about the precursors and architects implementing Microsoft’s technologies. Many of them have invested thousands of dollars/Euros/pounds etc. in their education, and put years into the preparation to achieve this level. And guess who they call when problems seem unsolvable? Yes, indeed, exactly those MCMs and MCAs… - The consequences of the loss of confidence born from this course of action are not yet quite foreseeable, and the future is still in the dark.
|
|
Tim Sneath von Microsoft übernimmt unter den zahlreichen Kommentaren dort ausdrücklich die Verantwortung für diese Entscheidung, erklärt die Hintergründe dazu und deutet auch Überlegungen für die Zukunft an. Einige Auszüge aus seinem Kommentar:
|
Among the numerous comments, Tim Sneath from Microsoft expressly assumes responsibility for this decision, explains background information and suggests deliberations for the future. Some excerpts from his comment:
|
…
„We simply think we could do much more for the broader community at this level – that we could create something for many more to aspire to. We want it to be an elite community, certainly. But some of the non-technical barriers to entry run the risk of making it elitist for non-technical reasons. Having a program that costs candidates nearly $20,000 creates a non-technical barrier to entry. Having a program that is English-only and only offered in the USA creates a non-technical barrier to entry. Across all products, the Masters program certifies just a couple of hundred people each year, and yet the costs of running this program make it impossible to scale out any further. And many of the certifications currently offered are outdated – for example, SQL Server 2008 - yet we just can't afford to fully update them. “
„That’s why we’re taking a pause from offering this program, and looking to see if there’s a better way to create a pinnacle, WITHOUT losing the technical rigor. We have some plans already, but it’s a little too early to share them at this stage. Over the next couple of months, we'd like to talk to many of you to help us evaluate our certifications and build something that will endure and be sustainable for many years to come.“
“Perhaps you think it is wrong-headed, but I wanted to at least explain some of the rationale. It comes from the desire to further invest in the IT Pro community, rather than the converse. It comes from the desire to align our programs with market demand, and to scale them in such a way that the market demand itself grows. It comes from the desire to be able to offer more benefits, not fewer. And over time I hope we'll be able to demonstrate the positive sides of the changes we are going through as we plan a bright future for our certifications.”
…
|
Viele der genannten Gründe sind meiner Meinung nach nachvollziehbar und ich finde darunter auch einige in der Tat wichtige Aspekte, wie z.B. die Sprachbarriere und der mangelnde Bekanntheitsgrad wieder. Jedoch bin ich mit der Konsequenz, das MCM Programm zu schließen, nicht einverstanden – der geringe Bekanntheitsgrad ist wohlbekannt, aber daran hätte man eben auch arbeiten müssen und können - meine Meinung. Auch die Aussage, dass gerade einmal 0,08% aller MCSE’s im MCM Programm sind (!), sehe ich nicht als Schwäche, sondern eben genau als Gütesiegel.
|
In my view, many of the listed reasons are comprehensible, and I am actually also seeing some truly important aspects, such as language barriers and a lack of name recognition. However, I do not agree on the resulting conclusion to close the MCM program. The marginal name recognition is well-known, and in my opinion, one should and could have worked on that. As for the statement that merely 0.08% of all MCSEs are in the MCM program (!), this is something I do not consider a weakness but in fact a hallmark of quality.
|
|
Reaktionen der Community & Presse In diesem Sinne äußert sich auch WindowsITPro: Microsoft Learning kills MCM and MCA accreditations - ebenfalls lesenswert, für wer sich mit der Thematik Zertifizierungen generell auseinandersetzt. 2 Artikel von „The Register“: |
Reactions from the community and press In the same vein, Windows ITPro expresses itself, too: Microsoft Learning kills MCM and MCA accreditations – interesting to read for those dealing with the subject of certifications in general. 2 articles by “The Register”: |
- Microsoft cans three 'pinnacle' certifications, sparking user fury
- Redmond's certification chief explains death of MCM and MCA
|
Weitere Kommentare von MCMs und MVPs: |
Further comments from MCMs and MVPs: |
- Retiring the Microsoft Master certifications and training - Neil Johnson, Microsoft
- Microsoft Certified Masters: What Problem Were They Trying To Solve? - Thomas LaRock, Vice President, Marketing PASS
- Death of an MCM - Hier werden die Kosten für das MCM Programm gegenüber den "Standard-Zertifizierungen" seitens MSLearning einmal auseinandergenommen. Der Kostenunterschied durch die hohen Ansprüche an die Prüfungen ist in der Tat enorm. Und das war dann sicherlich auch der entscheidende Faktor.
//
Here the costs for the MCM program are being compared against those for of the „standard certification“ by MSLearning. The difference really is huge and most probably the decisive fact. - Once an MCM always an MCM
- So Long MCM
- Rare Species, Extinction and the MCM
- Is the Master Certification Dead or Will it be Born Again? - Robert Davis, der vorhergehende Program Manager des MCM/MCA Programms
- MCM / MCSM / MCA Programm wird von Microsoft zum 01.10.2013 eingestellt - hier gibt Uwe Ricken, der zweite und zugleich letzte (nicht falsch verstehen), der diese Zertifizierung als von Microsoft unabhängiger MCM für SQL Server in Deutschland noch erreicht hat - "bevor sich diese Tür nun für immer schließen wird" - seine Meinung dazu wieder.
//
Here, Uwe Ricken, the second and at the same time last (don’t read me wrong), who gained this certification as a Microsoft independent in Germany, is blogging his opinion on the subject. - Microsoft is retiring the MCSM/MCA Program…
- Microsoft Certified Systems Master certification now dead
- Microsoft retires its top-level certifications MCM, MCA and MCSM
- Microsoft killed MCM/MCSM/MCA certifications
|
An dieser Stelle noch 3 Zitate aus der Community, die ich ansonsten unkommentiert lasse, weil sie für sich selbst sprechen: |
At this place 3 quotes from community members, which I leave uncommented, since they speak for themselves. |
As of last night, there are now 0 certifications that one can take that I will immediately respect. MCITP/MCTS/MCSA/MCSE tell me that either a person is interested in learning more, that they were required by their company to take the exams and did the absolute bare minimum memorisation or that they’re a cheat, which it is I have to find in the interview.
Grant Fritchey
Just read about the death of the MCM. The one and only Microsoft certification I respected is gone. Back to no respect.
Greg Low (MVP)
A first step in making the program more relevant would have been to make use of it within other Microsoft programs. For example, Microsoft Certified Trainers could have been required to have at least taken the knowledge exam. When I suggested that, it was met with howls of “but we’d lose most of the trainers”. While that’s partly true, what does that tell you about the existing trainers?
|
Ich bin gespannt, was die Zukunft bringt, aber auch in Sorge, dass eine Neuauflage in der Art "Master light" geschehen könnte.
|
I am curious about the future, but also worried, that a new edition could be sort of a “Master light”. |
Andreas Wolter
MCSM: Charter Data Platform
MCM SQL Server 2008
|
Jetzt ist der Seltenheitswert dieser Plakette endgültig… |
Now this badge is something of a rarity for real… |

|
Anbei die (fast) komplette Email vom 30.8.: |
Attached the (almost) complete Email from 8/30: |
"MCM/MCSM/MCA Program Update"
We are contacting you to let you know we are making a change to the Microsoft Certified Master, Microsoft Certified Solutions Master, and Microsoft Certified Architect certifications. As technology changes so do Microsoft certifications and as such, we are continuing to evolve the Microsoft certification program. Microsoft will no longer offer Masters and Architect level training rotations and will be retiring the Masters level certification exams as of October 1, 2013. The IT industry is changing rapidly and we will continue to evaluate the certification and training needs of the industry to determine if there’s a different certification needed for the pinnacle of our program.
As a Microsoft Certified Master, Microsoft Certified Solutions Master, or Microsoft Certified Architect, you have earned one of the highest certifications available through the Microsoft Certification program. Although individuals will no longer be able to earn these certifications, you will continue to hold the credential and you will not be required to recertify your credential in the future. You will continue to have access to the logos through the MCP site, and your certifications will continue to show in the appropriate section of your transcript, according to Microsoft technology retirement dates. If you are a Charter Member, you will continue to hold the Charter Member designation on your transcript.
Also as a Microsoft Certified Master, Microsoft Certified Solutions Master, or Microsoft Certified Architect, you are a member of an exclusive, highly technical community and you’ve told us this community is one of the biggest benefits of your certification. We encourage you to stay connected with your peers through the main community distribution lists. Although we won’t be adding more people to this community, you continue to be a valued member of it. Over time, Microsoft plans to transition the distribution lists to the community, and, with your consent, will include your information so that it can continue to be a valuable resource for your ongoing technical discussions.
Within the coming weeks, you will receive invitations to an updated community site. This community site will require you to sign in with a Microsoft Account and will replace the need for a Microsoft Partner account as is required today. From this site, you will be able to manage service requests for the Masters and Architects communities – such as ordering welcome kits and managing your contact information for the distribution lists and directory - and accessing training rotation and other community content (if applicable).
...
We thank you for your commitment to Microsoft technologies.
...

PreCon Performance Analysis & Tuning Techniques at SQLSaturday in Istanbul
Aug 23rd
PreCon Performance Analyse & Tuning Techniken auf dem SQLSaturday in Istanbul
|
(DE) Was für ein Jahr: nachdem ich bereits 3 SQLSaturdays (Dänemark, Niederlande, Deutschland) hinter mir habe, werde ich nun auch auf dem SQSaturday #258 (5. Okt.) in Istanbul sprechen. |
(EN) What a year: after already 3 SQLSaturdays (Denmark, Netherlands, Germany) behind me, I will now also speak at SQSaturday #258 (Oct. 5th) in Istanbul, Turkey. |
|
Ich freue mich wirklich sehr über das Thema und zugleich auch über den Austragungsort. Zurück zum Technischen: Hier ist die Vortrags-Beschreibung & Agenda: Sei bereit für einen vollen Tag Abtauchen in SQL Server Performance Analyse. |
I am really excited about the topic and location at the same time. Istanbul is a must-see city for history- & photography enthusiasts like me. (My Facebook wall is awaiting great images :) Back to the technical stuff. Here is the session description & agenda: “Be ready for a full day of diving into SQL Server Performance Analysis. |
|
Enthaltene Themen:
|
Included Topics:
|
|
And hier ist der Link zur PreCon (4. Okt.) Registrierung: www.eventbrite.com/event/7619115981 Wer ein Wochenende in einer historischen Stadt voller Sehenswürdigkeiten mit deep-dive SQL Server Themen kombinieren möchte, ist gern willkommen :-) |
And here is the link to the PreCon (4th of Oct.) registration: If you want to combine a week-end in a city of history and beauty, with some deep-dive SQL Server topics, come and join us :-) |
|
Neben der PreCon werde ich auch einen Vortrag am Samstag (5. Okt) halten. Thema: Sicherheit Titel: "SQL Attack…ed” – SQL Server under attack." Und auch zwei weitere Kollegen von der PASS Deutschland e.V. werden dabei sein: Tillmann Eitelberg und Oliver Engels. |
Besides the PreCon I will also hold a presentation on Saturday (5th of Oct.). Topic: Security Title: "SQL Attack…ed” – SQL Server under attack." And also two other colleagues from the German PASS will be there: Tillmann Eitelberg and Oliver Engels. |
See you in Istanbul.
Andreas

Performance overhead of tracing with Extended Event targets vs SQL Trace under CPU Load
Aug 14th
Leistungseinbußen beim Tracing, Extended Event Ziele gegen SQL Trace unter CPU Last
|
(DE) Inspiriert durch den Blog Post Post “Measuring Observer Overhead of SQL Trace vs. Extended Events” von Jonathan Kehayias, war ich neugierig, ein paar weitere Benchmarks durchzuführen. Die Resultate habe ich bereits in meinen SQL Server Master-Class Workshops zu XEvents und auf der PreCon des SQLSaturday #230 präsentiert. Nun teile ich sie endlich hier. Vor allem folgende Aspekte interessierten mich:
Da ich einmal das Setup bereit hatte, habe ich mich entschieden, alle anderen Ziele ebenfalls aufzunehmen, sowie einige grundlegende Options-Variationen, um einen kompletten Überblick zu erhalten, der in sich vergleichbar ist. |
(EN) Inspired by the Blog Post “Measuring Observer Overhead of SQL Trace vs. Extended Events” by Jonathan Kehayias, I was curious to do some more benchmarking. I was interested in the following aspects, in particular:
Besides that, once I had the setup ready, I decided to include all the other targets and some basic option-variations, to have a complete overview that is comparable in itself. |
|
Ich entschied mich für ein System, das bereits unter CPU Druck steht – die CPU Verwendung liegt fast vollständig bei 100%. |
I also decided for a test of a system that’s already under CPU pressure - so the Processor Usage is almost constantly hitting 100%. |
|
Test Umgebung “Einfach aber physikalisch” 1 Windows 2008 R2 Server mit SQL Server 2012 SP1. Keine laufenden Dienste abseits des minimal Notwendigem, um Seiten-Effekte zu verhindern. Die Arbeitslast war ein Mix von meist kurzen (Sub-Sekunden) aber auch einigen Abfragen mit mehreren Sekunden Laufzeit, (Ad Hoc und gespeicherte Prozeduren), um eine einigermaßen realistische Decision-Support-System Last zu simulieren – jedoch ohne Datenänderungen. |
Test Environment “Simple but physical” 1 Windows 2008 R2 Server with SQL Server 2012 SP1. No running services above the minimum required, to avoid side-effects. The workload was a mixture of mostly short (sub-second) but also several queries of several second runtime, (Ad Hoc and stored procedures) to simulate a somehow realistic decision-support-systems’ load – no data changes though. |
|
Trace-Konfigurationen Ich habe mich für eine einfache, aber nicht unübliche Trace entschieden, die typischerweise viele Daten sammelt. |
Trace-Configurations I decided for a simple but not uncommon trace that typically collects a lot of data. The trace collects only 2 events: |
- Lock acquired
- Lock released
|
Ausgefiltert: System-Sitzungen und andere Datenbanken als die, die hier unter Last steht. Gesammelte Daten: |
Filtered out: System-sessions and other databases than the one under load here. CollectedData: |
- Lock:Released BinaryData
- Lock:Released DatabaseID
- Lock:Released TransactionID
- Lock:Released SPID
- Lock:Released ObjectID
- Lock:Released Mode
- Lock:Released BigintData1
- Lock:Released IntegerData2
- Lock:Released ObjectID2
- Lock:Released Type
- Lock:Released OwnerID
- Lock:Released IsSystem
- Lock:Acquired BinaryData
- Lock:Acquired DatabaseID
- Lock:Acquired TransactionID
- Lock:Acquired SPID
- Lock:Acquired Duration
- Lock:Acquired ObjectID
- Lock:Acquired IsSystem
- Lock:Acquired Mode
- Lock:Acquired BigintData1
- Lock:Acquired IntegerData2
- Lock:Acquired ObjectID2
- Lock:Acquired Type
- Lock:Acquired OwnerID
|
Das gab mir den Vorteil, einen validen Test für alle Extended Event Targets, die bereitgestellt werden, zu haben (lediglich ETW-Tracing wurde ausgelassen) - speziell das Histogramm und die „Ereignispaarbildung“ (Pair-Matching)(Die wenigen Ereignisse von Lock-Escalation störten mich bewusst nicht). Die folgenden Trace Technologien und -Ziele wurden verwendet: |
This gave me the advantage to have a valid test for all Extended Event Targets that are provided (only ETW-Tracing was left out) - specifically histogram and Pair Matching (I did not care about the few occasions of lock escalation on purpose). The following Trace technologies and -Targets were used: |
- XEvent Trace, Target: None
- XEvent Trace, Target: Ring Buffer
- XEvent Trace, Target: File
- XEvent Trace, Target: Counter
- XEvent Trace, Target: Histogram
- Here I chose to filter on lock acquired and to bucketize on the lock mode
- XEvent Trace, Target: Pair Matching
- Guess, what I matched here ;-)
- SQL Trace, Target: None (I had to trick a little bit to get this to work, but I made sure, the behavior of this unsupported configuration did not distort the results: It’s just a SQL Trace with no Provider processing, so all events are lost by nature.)
- SQL Trace, Target: File
- SQL Profiler, remotely
|
Für jedes Ziel der Extended Events habe ich 4 Varianten getestet, basierend auf den Sitzungsoptionen: |
For each Extended Event Target I tested 4 variations, based on the session options: |
- Single event loss
- No event loss
- Multiple event loss
- Single event loss with causality tracking on
|
Alle anderen Optionen verwendeten die Standardwerte für diese Tests. |
All other options were using the defaults for these tests. |

Picture: the 24 prepared traces
|
Die Ergebnisse Ich habe die Gesamtlaufzeit für die Workload sowie Batches pro Sekunde und CPU Zeit % gemessen. Und hier ist die vollständige Tabelle mit den Ergebnissen: |
The Results I measured the total time for the workload to take as well as batches per second and CPU time %. And here is the complete Table of Results: |

|
EL = Ereignisverlust. S = Verlust einzelner Ereignisse, N = Kein Ereignisverlust, M = Verlust mehrerer Ereignisse CT = Kausalitätsverfolgung (Causality Tracking) Ein |
EL = Event Loss. S = Single event loss, N = No event loss, M = Multiple event loss CT = Causality Tracking On |
|
Um Zeit und Platz zu sparen, konzentriere ich mich auf die Benchmarks mit den Optionen single event loss und no event loss ohne Causality Tracking. Tatsächlich waren die Kosten von Causality Tracking weniger als 1% für alle Ziele. Hier ist daher das komprimierte Ergebnis: |
For the sake of saving space and time, I will focus on the benchmarks with the options single event loss and no event loss without causality tracking. In fact, the cost of causality tracking was less than 1% for all targets. So this is the more condensed result: |

|
Was wir demnach sagen können, ist: |
What we can tell from that, is: |
|
|
|
Ein schönes Bild der SQL Trace Architektur findet sich in den BOL: msdn.microsoft.com/en-us/library/hh245121.aspx |
You have a nice picture of the SQL Trace Architecture in BOL: msdn.microsoft.com/en-us/library/hh245121.aspx |
|
Hinzufügen von Filtern Wie ändert das Hinzufügen von Filtern den Beobachter-Overhead? Es ist wichtig, zu wissen, was ich als Filter verwendet habe: Die database_id / source_database_id. |
Adding Filters How does adding filters change the observer overhead? Now it is important to note what I actually used as a filter: The database_id / source_database_id. |
|
Dieses Mal konzentriere ich mich nur auf „single“ und „no event loss“. Die Resultate des gefilterten Tracing, ohne tatsächlich irgendwelche Events zu speichern/protokollieren, ist wie folgt: |
This time I only focused on “single” and “no event loss”. The results of Filtered Tracing, without actually storing/logging any events is as follows: |

Für diesen Test habe ich SQL Profiler nicht ausgeführt, Pardon. Sie wissen bis hierhin wahrscheinlich schon, warum. ;-) |
I did not run SQL Profiler for this Test, forgive me. You probably know why by now. ;-) |
|
Wait-Types für Extended Events Ein weiterer Aspekt, der mich interessierte, waren die XEvent Wait-Typen, die auftreten würden, wenn man Extended Event Sessions ausführt. (Die Warte-Statistiken sind oft die Basis für Performance-Analysen) Allgemein sieht man folgende: |
Wait-Types for Extended Events Another aspect I was interested in were the specific XEvent wait-types which would occur when running Extended Event sessions. In general, you will see the following: |
|
Beim Starten einer Sitzung: |
When starting a session: |
PREEMPTIVE_XE_TARGETINIT
PREEMPTIVE_XE_CALLBACKEXECUTE
PREEMPTIVE_XE_SESSIONCOMMIT
|
Beim Beenden einer Sitzung: |
When stopping a session: |
PREEMPTIVE_XE_SESSIONCOMMIT
XE_BUFFERMGR_ALLPROCESSED_EVENT
PREEMPTIVE_XE_CALLBACKEXECUTE
|
Während Sessions aktiv sind, sieht man: |
While running sessions you will see: |
XE_DISPATCHER_WAIT - From BOL: Occurs when a background thread that is used for Extended Events sessions is waiting for event buffers to process. - You should be able to safely ignore this unless you believe a problem is occurring with processing of events for async targets. Since this works on a queue you can have bursts of high wait times especially when no XEvent sessions are active.
XE_TIMER_EVENT – From BOL: Used to indicate a background task is waiting for "expired" timers for internal Xevent engine work. - You should be able to safely ignore this one. Just used by the Xevent engine for internal processing of its work. If something was possibly wrong with Xevent processing you might see if this thread ever "wakes up"
|
Beim Starten eines File-Targets sieht man außerdem: |
When starting the File target you will also see: |
PREEMPTIVE_XE_TARGETINIT
|
Wenn man eine Sitzung mit der No Event Loss Option ausführt, sieht man gegebenenfalls: |
If you run a session with the no event loss option you might see |
XE_BUFFERMGR_FREEBUF_EVENT - which by BOL means: An Extended Events session is configured for no event loss, and all buffers in the session are currently full. This can indicate that the buffers for an Extended Events session are too small, or should be partitioned.
|
So. Ich hoffe das war interessant. Man kann noch weitere und andere Schlüsse aus den Ergebnissen ziehen. Immer im Hinterkopf zu behalten, ist, dass das ein sehr spezielles Szenario ist, wo keine CPU Reserven zur Verfügung stehen, so das der Trace/Beobachter-Overhead sich manifestieren muss – keine Chance, als eben (CPU) Ressourcen wegzunehmen. |
So, I hope this was interesting for you. You may draw more and other conclusions out of these results. Remember though: this is a very specific scenario with no CPU reserves, so the Tracing/observer overhead has to show up – no choice but to take away (CPU) resources. |
Happy Tracing
Andreas
PS: I just discovered that my MCM and SQLSkills-class buddy Steven Ormrod also has recently blogged about the performance overhead from a SQL Trace to remote file share on production here: stevenormrod.com/2013/06/remote-trace-slowing-down-server/

CONTROL SERVER vs. sysadmin/sa: permissions, system procedures, DBCC, automatic schema creation and privilege escalation - caveats
Aug 1st
CONTROL SERVER gegen Sysadmin/sa: Berechtigungen, Systemprozeduren, DBCC, automatische Schema-Erstellung und Privilegienausweitung - Fallstricke
|
(DE) Seit SQL Server 2005 gibt es die Serverweite Berechtigung CONTROL SERVER. Prinzipiell eine Alternative zur sysadmin-Mitgliedschaft, blieb sie dennoch nicht viel mehr als ein Ladenhüter – kaum bekannt und noch weniger verwendet. Einer der Hauptgründe dafür war die fehlende Möglichkeit, dieses Recht einer Gruppe von Prinzipalen/Logins auf Server-Ebene zu geben. Seit SQL Server 2012 ist es ja nun möglich, eigene Server-Rollen zu definieren, so dass diese Berechtigung nun immer mehr Verwendung findet. Dennoch ist sie kein vollständiger Ersatz für sysadmin. Warum das so ist wo die Unterschiede liegen und wo es sogar ein Risiko sein kann, möchte ich im Folgenden für meine Leser festhalten und demonstrieren. |
(EN) Since SQL Server 2005, the server wide permission CONTROL SERVER has been existing. In principle being an alternative to sysadmin-membership, it did not turn out to be much more than a shelf warmer. - Little known and even less used. One of the main reasons for this was the absence of an option to grant this permission to a group of principals/Logins on server-level. Since SQL Server 2012, it has been possible to define custom server-roles, so now this permission is used more and more. However, it is no complete replacement for sysadmin. In the following, I want to demonstrate to my readers exactly why this is, where the differences are and where it can even be a risk. |
|
Grundlegende Kenntnisse über das Verhalten von sysadmin und dbo setze ich als hinreichend bekannt voraus, und konzentriere mich auf das, was bei der Verwendung von CONTROL SERVER anders ist. |
I will take as a given basic knowledge about the behavior of sysadmin and dbo and therefore focus on the things that are different when using CONTROL SERVER. |
|
Zunächst wird ein neuer Login, „DBA_TheDude“, angelegt – das Passwort natürlich streng meinen Richtlinien (für Blogs) entsprechend. ;-) Es folgen eine neue Serverrolle, „Role_DBA“, in die der Login als Mitglied aufgenommen wird. Und da diese Rolle für Administratoren gedacht ist, erhält sie die weitest-möglichen Rechte: CONTROL SERVER. |
First of all, a new Login, „DBA_TheDude“, is created – the password of course adhering strongly to my rules (for blogs). ;-) This is followed by a new server role “Role_DBA” to which the Login will be added as a member. And since this role is meant for administrators, it receives the most extensive permission: CONTROL SERVER. |
USE [master]
GO
CREATE LOGIN DBA_TheDude WITH PASSWORD=N'www', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
CREATE SERVER ROLE [Role_DBA]
ALTER SERVER ROLE [Role_DBA]
ADD MEMBER DBA_TheDude
GRANT CONTROL SERVER TO [Role_DBA]
GO
CREATE DATABASE ControlServer_Schema_Demo
GO
|
Als nächstes melden wir uns als DBA am System an und lassen uns „die (effektiven) Rechte verlesen“ :-) |
Next we log onto the system as DBA and have "our (effective) rights" displayed. :-) |
EXECUTE AS LOGIN = 'DBA_TheDude'
SELECT entity_name, permission_name
FROM sys.fn_my_permissions(NULL, NULL)entity_name
| entity_name |
permission_name |
|
server |
CONNECT SQL |
|
server |
SHUTDOWN |
|
server |
CREATE ENDPOINT |
|
server |
CREATE ANY DATABASE |
|
server |
CREATE AVAILABILITY GROUP |
|
server |
ALTER ANY LOGIN |
|
server |
ALTER ANY CREDENTIAL |
|
server |
ALTER ANY ENDPOINT |
|
server |
ALTER ANY LINKED SERVER |
|
server |
ALTER ANY CONNECTION |
|
server |
ALTER ANY DATABASE |
|
server |
ALTER RESOURCES |
|
server |
ALTER SETTINGS |
|
server |
ALTER TRACE |
|
server |
ALTER ANY AVAILABILITY GROUP |
|
server |
ADMINISTER BULK OPERATIONS |
|
server |
AUTHENTICATE SERVER |
|
server |
EXTERNAL ACCESS ASSEMBLY |
|
server |
VIEW ANY DATABASE |
|
server |
VIEW ANY DEFINITION |
|
server |
VIEW SERVER STATE |
|
server |
CREATE DDL EVENT NOTIFICATION |
|
server |
CREATE TRACE EVENT NOTIFICATION |
|
server |
ALTER ANY EVENT NOTIFICATION |
|
server |
ALTER SERVER STATE |
|
server |
UNSAFE ASSEMBLY |
|
server |
ALTER ANY SERVER AUDIT |
|
server |
CREATE SERVER ROLE |
|
server |
ALTER ANY SERVER ROLE |
|
server |
ALTER ANY EVENT SESSION |
|
server |
CONTROL SERVER |
|
Klingt gut. Scheint Nichts zu fehlen. Vergleichen wir es mal mit der Liste aller Rechte, die es auf Server-Ebene überhaupt gibt: |
Sounds good. Nothing seems to be missing at first glance. Let’s compare it to the list of all permissions which exist on server-scope: |
SELECT class_desc COLLATE Latin1_General_CI_AI, permission_name COLLATE Latin1_General_CI_AI
FROM sys.fn_builtin_permissions('SERVER')
EXCEPT
SELECT entity_name, permission_name
FROM sys.fn_my_permissions(NULL, NULL)
-->
(0 row(s) affected)
|
Ok, also wir haben wirklich alle Rechte, die man (auf Serverebene) vergeben kann. Diese Berechtigungen und Kommandos funktionieren auch wie dokumentiert. Wie sieht es aber mit gespeicherten Systemprozeduren aus? |
Ok, we really do have all permissions which can be granted (at server scope). Those permissions and commands really do work as documented. But how about system stored procedures? |
exec sp_readerrorlog
-->
Msg 15003, Level 16, State 1, Procedure sp_readerrorlog, Line 11
Only members of the securityadmin role can execute this stored procedure.
|
Warum das jetzt? Ganz einfach. Sicher ist es den meisten noch gut aus SQL Server 2000-Zeiten bekannt, dass sicherheitskritische Systemprozeduren einen Check auf Mitgliedschaft in bestimmten Rollen enthalten. Und das tun die meisten derer auch heute noch. Ein Artefakt der damaligen unflexiblen Rechte-Verwaltung, kann man sagen. Wenn man in den Code der sp_readerrorlog schaut, wird es dort genau so gemacht: |
Why ist that now? Quite simple. Most do probably remember from SQL 2000 times, that security wise critical system procedures include a check for membership in certain roles. And most of them still do the same today. One can call it an artefact of the then inflexible permission-management. When we look into the code of sp_readerrorlog, this is what is being done there as well: |
if (not is_srvrolemember(N'securityadmin') = 1)
begin
raiserror(15003,-1,-1, N'securityadmin'
return (1)
end
...
exec sys.xp_readerrorlog...
|
Okay. In der GUI-Anzeige im Management Studio hilft uns das nicht, wir können es als manuellen Workaround verwenden. Weitere Systemprozeduren, die über SSMS aufgerufen werden und die Ausführung verweigern sind unter anderem: sp_addlinkedserver lässt sich dafür ohne Probleme ausführen – nur eben nicht über die GUI wegen eben genannter Prozedur. Die Einrichtung von Database-Mail über die GUI bleibt ebenfalls den sysadmins vorbehalten. Via Script sollte es jedoch funktionieren (ungetestet). Auch die Konfiguration des Distributors für die Replikation mittels sp_adddistributor ist ohne den sysadmin-Bit nicht möglich. Unter SQL Server 2005 – 2008R2 gibt es für das Hinzufügen/Entfernen von (Server-)Rollenmitgliedern nur die Prozedur sp_addsrvrolemember / sp_dropsrvrolemember. Diese führt ebenfalls eine Serverrollen-Mitgliedschafts-Prüfung durch. - Unter SQL Server 2012 ist diese Prozedur aus Rückwärtskompatibilitätsgründen noch vorhanden, jedoch wurde dieser Check aus dem Code entfernt. Damit verhält sie sich in dieser Hinsicht somit wie der direkte Aufruf von ALTER SERVER ROLE {RoleName} ADD MEMBER {Loginname}. Das gleiche gilt für sp_addrolemember / sp_droprolemember für Datenbankrollen. |
Okay. This does not help in the GUI-presentation in Management Studio but we can use it as a manual workaround. Among other system procedures that are called via SSMS and refuse execution are: sp_addlinkedserver on the other hand can be executed without problems – just not via the GUI because of the just mentioned procedure. Setting up Database-Mail via the GUI is also reserved for sysadmins. It should work via script though (untested). Also the configuration of the distributor for replication by means of sp_adddistributor is not possible without the sysadmin bit. Under SQL Server 2005 – 2008R2, to add/remove (server) role members, solely the system procedure sp_addsrvrolemember / sp_dropsrvrolemember exists. This one also conducts a server-role-membership-check. - Under SQL Server 2012 this procedure still exists for backwards-compatibility reasons, but this specific check has been removed from the code. Thereby it now behaves like the direct call of ALTER SERVER ROLE {RoleName} ADD MEMBER {Loginname}. Same applies to sp_addrolemember / sp_droprolemember for database roles. |
|
Soweit zu Systemprozeduren. Eigentlich ziemlich simpel, wenn man die Hintergründe kennt. Daher, wo möglich: DDL-Kommandos verwenden, wie seit SQL Server 2005 nahegelegt wird. Randnotiz: Es gibt mindestens 7 Variationen der Prüfung auf sysadmin-Mitgliedschaft. :-) :-( Eine Kostprobe: |
So much for system stored procedures. Quite simple after all, if you know the background. Therefore, wherever possible: use DDL-commands, as it is advised since SQL Server 2005. Side-note: there are at least 7 variations for the check of sysadmin-membership. :-) :-( A taster: |
IF IS_SRVROLEMEMBER('sysadmin') != 1
IF is_srvrolemember('securityadmin') = 0
IF (is_srvrolemember('sysadmin') <> 1)
IF (is_srvrolemember(N'sysadmin') <> 1 )
IF (not is_srvrolemember(N'sysadmin') = 1)
IF (ISNULL(IS_SRVROLEMEMBER('sysadmin'),0) = 0)
IF isnull(is_srvrolemember('sysadmin'),0) = 1
|
Die häufigsten Fehlermeldungen, die dann ggfls. ausgelöst werden, sind: |
The most frequent error messages which are triggered if applicable are: |
EN:
|
message_id |
text |
|
14126 |
You do not have the required permissions to complete the operation. |
|
14260 |
You do not have sufficient permission to run this command. Contact your system administrator. |
|
15003 |
Only members of the %s role can execute this stored procedure. |
|
15247 |
User does not have permission to perform this action. |
|
21089 |
Only members of the sysadmin fixed server role can perform this operation. |
|
22904 |
Caller is not authorized to initiate the requested action. DBO privileges are required. |
DE:
|
message_id |
text |
|
14126 |
Sie haben nicht die erforderlichen Berechtigungen, um den Vorgang abzuschließen. |
|
14260 |
Sie haben nicht die erforderliche Berechtigung, um diesen Befehl auszuführen. Wenden Sie sich an den Systemadministrator. |
|
15003 |
Nur Mitglieder der %1!-Rolle können diese gespeicherte Prozedur ausführen. |
|
15247 |
Der Benutzer besitzt nicht die Berechtigung zum Ausführen dieser Aktion. |
|
21089 |
Nur Mitglieder der festen Serverrolle 'sysadmin' können diesen Vorgang ausführen. |
|
22904 |
Der Aufrufer ist nicht zum Initiieren der angeforderten Aktion berechtigt. Es sind DBO-Privilegien erforderlich. |
|
Eine vollständige Liste aller Prozeduren, die auf sysadmin-Rollenmitgliedschaft prüfen, folgt am Ende. |
A complete list of procedures that check for sysadmin-membership is included at the end of this post. |
|
Kommen wir zu einem anderen wichtigen Bereich: DBCC-Kommandos |
Let’s come to another important area: DBCC commands |
DBCC CHECKDB
-->
Msg 7983, Level 14, State 36, Line 1
User 'public' does not have permission to run DBCC checkdb for database 'master'.
|
Das geht ja gut los. Die „Regel“ ist bei DBCC noch einfacher: Von DBCC CHECKDB über DBCC LOGINFO bis zu DBCC TRACEON. Also auch durchaus wertvolle Kommandos auch für den externen Support. Die einzigen Ausnahmen, die mir bekannt sind:
DBCC DETACHDB
DBCC FREEPROCCACHE und DBCC SQLPERF
DBCC DROPCLEANBUFFERS wiederum setzt die sysadmin-Rollenmitgliedschaft voraus. Diese Berechtigungen sind übrigens recht gut dokumentiert. |
That’s a good start, isn’t it.. The „rule“ for DBCC is even simpler: From DBCC CHECKDB via DBCC LOGINFO to DBCC TRACEON. Thus some quite valuable commands also for external support. The only exceptions known to me are:
DBCC DETACHDB
DBCC FREEPROCCACHE and DBCC SQLPERF
DBCC DROPCLEANBUFFERS on the other hand requires sysadmin-role membership. Those permissions are documented quite well by the way. |
|
Datenbankberechtigungen Mit CONTROL SERVER hat ein Prinzipal auch vollen Zugriff auf alle Datenbanken. Logins mit lediglich CONTROL SERVER-Berechtigung werden nicht(!) zu dbo gemapped. Welche Auswirkungen das hat, sieht man im Folgenden: |
Database permissions With CONTROL SERVER, a principal has full access to all databases. Logins with merely CONTROL SERVER permission are not(!) mapped to dbo. The consequences of this can be seen in the following: |
USE ControlServer_Schema_Demo
GO
SELECT USER_NAME()
-->
DBA_TheDude
CREATE TABLE dbo.DemoTable1_dbo(id int)
GO
CREATE TABLE DemoTable2_NoSchemaSpecified(id int)
GO
SELECT name, schema_id FROM sys.tables
SELECT * FROM sys.schemas
-->

--> 
SSMS:


|
Was ist passiert? Erinnern Sie sich noch an das pre-SQL 2012 Problem, das man Windows-Gruppen kein Default Schema zuweisen konnte? Und was passierte, wenn ein Entwickler über solch eine Gruppe vergaß, beim Anlegen eines Objektes das Schema anzugeben? Richtig. Das ist genau das gleiche: es wurde ein Schema mit dem Login-Namen des Entwicklern angelegt. Eine reine Freude für spätere Aufräumarbeiten, die „richtigen falschen“ Schemas zu identifizieren und zu löschen. Leider wurde dabei verpasst, auch die Behandlung von CONTROL SERVER Berechtigten anzupassen. Dazu hatte ich ebenfalls ein Connect-Item erstellt.: „Login with CONTROL SERVER Permission Creating an Object without specifying Schema leads to creation of new Schema with Login-Name”. - Leider zu spät. :-/ Vermutlich wird dazu ein identischer Code-Block verwendet, denn genau wie in dem Windows-Gruppen-Szenario ist dieses implizite Anlegen des Schemas nicht abfangbar. Fazit: Immer ein Schema angeben, wenn man als CONTROL Server Berechtigter Objekte anlegt – am besten einfach wirklich immer ein Schema angeben (es gibt noch andere Gründe dafür). |
What happened? Do you remember the pre-SQL 2012 problem, that windows groups could not be assigned a default schema? And what happened if a developer forgot to specify a schema when creating an object? Right. This is exactly the same: a schema with the Login-Name of the developer has been created. A true joy for later clean-up, to identify and drop the „right wrong” schemas. Unfortunately the handling of the CONTROL SERVER permission has been overlooked to be fixed. I did create a connect item: „Login with CONTROL SERVER Permission Creating an Object without specifying Schema leads to creation of new Schema with Login-Name”. – Unfortunately too late. :-/ Probably an identical code-block is being used for that, since just like in the Windows-Group scenario, this implicit creation of the schema is uncatchable. Conclusion: Always specify a schema when creating an object as a CONTROL SERVER granted principal – best: always specify a schema. (there are other reasons for that, too) |
|
Privilege-Escalation-Risiko: Abschließen möchte ich mit einem sicherheitstechnisch extrem wichtigen Hinweis: Logins mit CONTROL SERVER Berechtigung können standardmäßig JEDEN Login impersonifizieren. JEDEN. Also auch alle Sysadmins und sa selber! – Und auch wenn SQL Authentifizierung nicht aktiv ist! Und so lässt sich das wunderbar ausnutzen: |
Privilege-Escalation-risc: I want to wind up with a security-wise extremely important hint: Logins with CONTROL SERVER permission can impersonate EVERY Login. ALL OF THEM. Thus also all sysadmins and sa itself! – And even if SQL authentication is not active! And this is how this can be exploited marvellously: |
ALTER SERVER ROLE sysadmin
ADD MEMBER DBA_TheDude
--> No
EXEC sp_addsrvrolemember'DBA_TheDude', 'sysadmin';
--> No
EXECUTE AS LOGIN = 'sa';
ALTER SERVER ROLE sysadmin
ADD MEMBER DBA_TheDude
--> “Thank you”
REVERT;
-->

|
Wer sich also gegenüber dieser Form von Privilege-Escalation schützen möchte, muss das impersonate (mithilfe von DENY) verbieten. Sysadmin-Mitglieder können nicht mit DENY eingeschränkt werden. Prinzipale mit bloßer CONTROL SERVER Berechtigung jedoch schon. So funktionieren alle reinen DDL/DML Kommando-Berechtigungen eben. Also, um es noch einmal klar zu sagen, da es so entscheidend ist: Dummerweise geht das nur über "DENY IMPERSONATE ON LOGIN::[Loginname]". Denn IMPERSONATE ist hierarchisch direkt CONTROL SERVER untergeordnet! |
Who wants to protect himself from this form of privilege escalation must DENY impersonating. Sysadmin-members cannot be restricted anything via DENY. Principals with mere CONTROL SERVER permissions yet can. This is how all plain DDL/DML commands work. So, to say it clearly again, because this is vital: Unfortunately this only works via "DENY IMPERSONATE ON LOGIN::[Loginname]". This is because IMPERSONATE is hierarchically a direct subordinate of CONTROL SERVER! |
USE master
DENY IMPERSONATE ON LOGIN::sa TO [DBA_TheDude]
|
Bei einer sich ändernden Liste an Systemadministratoren hat man ein Problem, wenn man nicht an dieses Deny denkt! (Nächstes Risiko!) - Spätestens an dieser Stelle sollte man sich mit dem Überwachungs-Feature von SQL Server befassen. |
For a changing list of system administrators one has a real problem, in case of not remembering this crucial Deny! (Next risk!) - At the latest at this point one should address the Auditing feature of SQL Server. |
|
Mein Fazit und Lessons-learned daher: CONTROL-SERVER selber ist eine konsequente Fortführung der Bemühungen des Sicherheits-Teams, SQL Server sicherheitstechnisch noch einfacher und damit robuster zu machen. Jedoch ist aus dem Grund der Impersonate-Rechte eine Privilege Escalation zu sysadmin sehr einfach. Um diese zu verhindern, sollte man gut mit der Berechtigungs-Hierarchie von SQL Server vertraut sein. – Wie immer: „Wissen schafft Sicherheit.“ Was wirklich schmerzt, ist, das eines der besten Anwendungsszenarien: Rechte für Support-Personal, intern oder Extern. Im Endeffekt ist eine strikte „Separation of Duties“, die Funktionstrennung auf verschiedene „Rollen“ das eherne Ziel. Hier kann man dazu Nachlesen – auch das „SQL Server Separation of Duties Framework“ von codeplex, mit vielen guten Ideen kann ich empfehlen einmal anzusehen: |
My conclusion and lessions-learned therefore are: CONTROL SERVER itself is a consistent continuation of the efforts of the security team to make SQL Server even simpler and thereby more robust. Because of the impersonate-permissions, a privilege escalation is really simple. In order to prevent this, one should be familiar with the permission hierarchy of SQL Server. – As always: “Knowledge leads to security.” What really does hurt, is one of the best application cases: Permissions for support-personnel, internal or external. In the end, a strict “separation of duties” is the iron goal. Here you can read more about it – you should also check out the “SQL Server Separation of Duties Framework” on codeplex with many good ideas: |
http://blogs.technet.com/b/fort_sql/archive/2011/09/12/separation-of-duties-for-dba-s.aspx
|
Update 04-2014: Mit SQL Server 2014 wird CONTROL Server etwas sicherer. Hier kann man mehr zu den neuen Möglichkeiten lesen: |
Update 04-2014: With SQL Server 2014 CONTROL Server becomes a bit safer. You can read more on the new possibilities here: |
|
Eine Ablösung des „sa" ist übrigens nicht geplant, jedoch sinkt mit jedem Release die Anzahl der Szenarien, wo sa/sysadmin zwingend benötigt wird. |
A displacement of „sa“ is not planned by the way, but with every release the scenarios where sa/sysadmin is imperatively needed become less. |
Happy securing,
Andreas
|
Anbei die komplette Liste aller Systemprozeduren unter SQL Server 2012, die auf sysadmin-Rollenmitgliedschaft prüfen (171 – gegenüber 173 unter SQL Server 2008R2. SQL Server 2014 CTP1 ist noch das Gleiche): (Hinweis: Insgesamt 197 Systemprozeduren prüfen auf Serverrollenmitgliedschaft, wie diskadmin oder serveradmin usw.) |
Enclosed the list of all system procedures under SQL Server 2012 that check for sysadmin-role membership (171 – vs. 171 under SQL server 2008. SQL Server 2014 CTP 1 still the same): (Hint: Altogether 197 system procedures check for server role membership like diskadmin or serveradmin and so on) |
|
Module_Name |
|
fn_yukonsecuritymodelrequired |
|
sp_add_agent_parameter |
|
sp_add_agent_profile |
|
sp_adddatatype |
|
sp_adddistributiondb |
|
sp_adddistributor |
|
sp_addqreader_agent |
|
sp_addsubscriber |
|
sp_addsubscriber_schedule |
|
sp_addtabletocontents |
|
sp_attachsubscription |
|
sp_cdc_cleanup_change_table |
|
sp_cdc_disable_db |
|
sp_cdc_disable_table |
|
sp_cdc_drop_job |
|
sp_cdc_enable_db |
|
sp_cdc_enable_table |
|
sp_cdc_restoredb |
|
sp_cdc_vupgrade |
|
sp_certify_removable |
|
sp_change_agent_parameter |
|
sp_change_agent_profile |
|
sp_change_subscription_properties |
|
sp_change_users_login |
|
sp_changedistpublisher |
|
sp_changedistributiondb |
|
sp_changedistributor_password |
|
sp_changedistributor_property |
|
sp_changemergesubscription |
|
sp_changeqreader_agent |
|
sp_changereplicationserverpasswords |
|
sp_changesubscriptiondtsinfo |
|
sp_checkinvalidivarticle |
|
sp_copysubscription |
|
sp_create_removable |
|
sp_cycle_errorlog |
|
sp_dbcmptlevel |
|
sp_dbmmonitoraddmonitoring |
|
sp_dbmmonitorchangealert |
|
sp_dbmmonitordropalert |
|
sp_dbmmonitordropmonitoring |
|
sp_dbmmonitorhelpalert |
|
sp_dbmmonitorhelpmonitoring |
|
sp_dbmmonitorresults |
|
sp_dbmmonitorupdate |
|
sp_dbremove |
|
sp_drop_agent_parameter |
|
sp_drop_agent_profile |
|
sp_dropdatatypemapping |
|
sp_dropdistpublisher |
|
sp_dropdistributiondb |
|
sp_dropdistributor |
|
sp_dropmergepullsubscription |
|
sp_droppullsubscription |
|
sp_dropsubscriber |
|
sp_dsninfo |
|
sp_enumdsn |
|
sp_flush_commit_table_on_demand |
|
sp_generate_agent_parameter |
|
sp_get_distributor |
|
sp_get_Oracle_publisher_metadata |
|
sp_getagentparameterlist |
|
sp_getdefaultdatatypemapping |
|
sp_grant_publication_access |
|
sp_help_agent_default |
|
sp_help_agent_parameter |
|
sp_help_agent_profile |
|
sp_helpdistpublisher |
|
sp_helpdistributor |
|
sp_helpmergesubscription |
|
sp_helpqreader_agent |
|
sp_helpreplicationdboption |
|
sp_identitycolumnforreplication |
|
sp_IHValidateRowFilter |
|
sp_IHXactSetJob |
|
sp_link_publication |
|
sp_monitor |
|
sp_MSadd_distribution_agent |
|
sp_MSadd_logreader_agent |
|
sp_MSadd_merge_agent |
|
sp_MSadd_snapshot_agent |
|
sp_MSadd_subscriber_schedule |
|
sp_MSadd_tracer_history |
|
sp_MSadd_tracer_token |
|
sp_MScdc_cleanup_job |
|
sp_MScdc_db_ddl_event |
|
sp_MScdc_ddl_event |
|
sp_MSchange_distribution_agent_properties |
|
sp_MSchange_logreader_agent_properties |
|
sp_MSchange_merge_agent_properties |
|
sp_MSchange_snapshot_agent_properties |
|
sp_MSchangedynamicsnapshotjobatdistributor |
|
sp_MSchangedynsnaplocationatdistributor |
|
sp_MScheck_pull_access |
|
sp_MScleanupmergepublisher_internal |
|
sp_MSclear_dynamic_snapshot_location |
|
sp_MScreate_dist_tables |
|
sp_MSdbuserpriv |
|
sp_MSdeletefoldercontents |
|
sp_MSdrop_6x_replication_agent |
|
sp_MSdrop_merge_agent |
|
sp_MSdrop_snapshot_dirs |
|
sp_MSdropmergedynamicsnapshotjob |
|
sp_MSdynamicsnapshotjobexistsatdistributor |
|
sp_MSenumallpublications |
|
sp_MSfetchAdjustidentityrange |
|
sp_MSfix_6x_tasks |
|
sp_MSforce_drop_distribution_jobs |
|
sp_MSget_agent_names |
|
sp_MSget_jobstate |
|
sp_MSget_oledbinfo |
|
sp_MSget_publication_from_taskname |
|
sp_MSgetdbversion |
|
sp_MSgetmaxsnapshottimestamp |
|
sp_MShelp_repl_agent |
|
sp_MShelp_replication_status |
|
sp_MShelp_snapshot_agent |
|
sp_MShelpconflictpublications |
|
sp_MShelpdynamicsnapshotjobatdistributor |
|
sp_MShelplogreader_agent |
|
sp_MShelpsnapshot_agent |
|
sp_MShelptranconflictcounts |
|
sp_MSinit_publication_access |
|
sp_MSreinit_failed_subscriptions |
|
sp_MSremoveoffloadparameter |
|
sp_MSrepl_backup_complete |
|
sp_MSrepl_backup_start |
|
sp_MSrepl_createdatatypemappings |
|
sp_MSrepl_dropdatatypemappings |
|
sp_MSrepl_enumarticlecolumninfo |
|
sp_MSrepl_enumpublications |
|
sp_MSrepl_enumpublishertables |
|
sp_MSrepl_enumsubscriptions |
|
sp_MSrepl_enumtablecolumninfo |
|
sp_MSrepl_getdistributorinfo |
|
sp_MSrepl_startup_internal |
|
sp_MSreplagentjobexists |
|
sp_MSreplcheck_permission |
|
sp_MSreplcheck_pull |
|
sp_MSreplcheck_subscribe |
|
sp_MSreplcheck_subscribe_withddladmin |
|
sp_MSreplcopyscriptfile |
|
sp_MSreplremoveuncdir |
|
sp_MSsetalertinfo |
|
sp_MSSetServerProperties |
|
sp_MSsetupnosyncsubwithlsnatdist |
|
sp_MSsetupnosyncsubwithlsnatdist_cleanup |
|
sp_MSsetupnosyncsubwithlsnatdist_helper |
|
sp_MSstartdistribution_agent |
|
sp_MSstartmerge_agent |
|
sp_MSstartsnapshot_agent |
|
sp_MSstopdistribution_agent |
|
sp_MSstopmerge_agent |
|
sp_MSstopsnapshot_agent |
|
sp_MSupdate_agenttype_default |
|
sp_oledbinfo |
|
sp_procoption |
|
sp_removedbreplication |
|
sp_removesrvreplication |
|
sp_replication_agent_checkup |
|
sp_replicationdboption |
|
sp_resetstatus |
|
sp_restoredbreplication |
|
sp_SetAutoSAPasswordAndDisable |
|
sp_setdefaultdatatypemapping |
|
sp_updatestats |
|
sp_validatelogins |
|
sp_vupgrade_mergeobjects |
|
sp_vupgrade_replication |
|
sp_vupgrade_replsecurity_metadata |
|
xp_repl_convert_encrypt_sysadmin_wrapper |





