<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="b2evolution/4.1.7" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>InsideSQL.org Weblogs</title>
		<link>http://www.insidesql.org/blogs/</link>
		<atom:link rel="self" type="application/rss+xml" href="http://www.insidesql.org/blogs/?tempskin=_rss2" />
		<description>InsideSQL.org Blogs - Blogs &#252;ber SQL Server</description>
		<language>de-DE</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=4.1.7"/>
		<ttl>60</ttl>
				<item>
			<title>Umfrage zur Zertifizierung Microsoft Certified Master(MCM)/Solutions Master(MCSM), Interview und Trainingsm&#246;glichkeiten</title>
			<link>http://www.insidesql.org/blogs/andreaswolter/2013/05/27/umfrage-zertifizierung-microsoft-certified-master</link>
			<pubDate>Sun, 26 May 2013 22:28:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="main">MCM</category>
<category domain="alt">Seminare</category>
<category domain="alt">Zertifizierungen</category>			<guid isPermaLink="false">3492@http://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;&amp;#160;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Diesmal geht es in meinem Blog weniger technisch zu:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Ich habe vor kurzem bei XING eine kleine Umfrage durchf&amp;#252;hren lassen, um einmal zu erfahren, warum es weltweit, aber auch insbesondere im Deutschen Raum so wenige MCMs gibt. - Speziell au&amp;#223;erhalb von Microsoft-Angestellten selber schwankt die Anzahl je nach Produkt zwischen 0 und 6.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Die offiziellen Zahlen Ende Mai 2013 wie folgt (vornean die Gesamtzahl, in Klammern die Anzahl der MCMs davon, die nicht direkt f&amp;#252;r Microsoft arbeiten):&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; 0 (0) Windows Advanced Infrastructure (hier gibt es gleich keine MCMs in Deutschland, aber weltweit auch nur 16)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; 5 (4) Windows Server Directory&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; 9 (3) SQL Server&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; 9 (6) SharePoint&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; 7 (4) Microsoft Office Communications Server and Lync Server 2010&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; 12 (5) Microsoft Exchange Server&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;(Quelle: &lt;a href=&quot;http://www.microsoft.com/learning/en/us/mcm-certification.aspx&quot;&gt;www.microsoft.com/learning/en/us/mcm-certification.aspx&lt;/a&gt; - Hinweis, diese Quelle erhebt keinen Anspruch auf Vollst&amp;#228;ndigkeit, ist aber die beste, die es gibt und kann daher gut f&amp;#252;r einen Vergleich herangezogen werden.)&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&amp;#160;seit Beginn der Umfrage sind 2 MCMs f&amp;#252;r SQL Server 2008 dazugekommen, das sind 28%, kurz vor Auslaufen der Pr&amp;#252;fung :-)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Das hei&amp;#223;t, dass ich nun nach einem Jahr nicht mehr der einzige von Microsoft unabh&amp;#228;ngige MCM f&amp;#252;r SQL Server in Deutschland bin, sondern nur noch der Erste. :-)&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: verdana,geneva; font-size: small;&quot;&gt;siehe auch &lt;a href=&quot;http://www.insidesql.org/blogs/uricken/2013/05/24/mcm-sql-server-2008&quot;&gt;www.insidesql.org/blogs/uricken/2013/05/24/mcm-sql-server-2008&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Was sind nun die Gr&amp;#252;nde f&amp;#252;r diese geringe Anzahl? &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Ganz abgesehen davon, das mit Sicherheit die gestellten Anspr&amp;#252;che ein Grund sind, sind bei der Umfrage folgende Antworten Zusammengekommen:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&amp;#160;&lt;img src=&quot;http://sarpedonqualitylab.com/sql-images/sql-articles/1305_UmfrageErgebnisse_MCM_MCSM.png&quot; alt=&quot;UmfrageErgebnisse_MCM_MCSM&quot; width=&quot;398&quot; height=&quot;358&quot; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva; font-size: small;&quot;&gt;- Bislang haben sich 47 Teilnehmer an der Umfrage beteiligt. (Noch offen bis Ende Mai &amp;#8211; ich werde die finalen Ergebnisse hier dann nochmal &amp;#252;bernehmen)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Hier geht es zur Umfrage: &lt;a href=&quot;https://www.xing.com/app/newsfeed?op=poll_detail;id=9673&quot;&gt;www.xing.com/app/newsfeed?op=poll_detail;id=9673&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Nun kann man dort sicherlich vieles vermuten, und ich erhebe auch nicht den Anspruch einer wissenschaftlich fundierten Analyse. Aber einige Dinge fallen doch sehr ins Auge, darum m&amp;#246;chte ich die einzelnen Punkte frei aus meiner (pers&amp;#246;nlichen) Sicht kommentieren.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;1) 57% - Zeitlicher Aufwand&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;-&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hier w&amp;#228;re nat&amp;#252;rlich eine Aufteilung in WAS den zeitlichen Aufwand denn ausmacht interessant gewesen. Aber eigentlich k&amp;#246;nnen es nur 2 Dinge sein: Die Pr&amp;#252;fung selber. &amp;#8211; mit 5,5 Stunden ist die Lab in der Tat zeitaufw&amp;#228;ndiger als alle anderen Pr&amp;#252;fungen. Aber kann das so viel ausmachen?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Bleibt: Die Vorbereitung, also das Lernen der Stoffe, die man vielleicht noch nicht in hinreichender Tiefe beherrscht. Interessanterweise ist Punkt 3 (erforderliches Know-How) daf&amp;#252;r offenbar gar nicht das Problem. &amp;#8230;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;2) 57% - Zu teuer (Pr&amp;#252;fung)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- zugegeben, die Pr&amp;#252;fung ist nicht &amp;#8222;billig&amp;#8220;&amp;#8220;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; (F&amp;#252;r das Erreichen dieser Zertifizierung sind ja 2 Pr&amp;#252;fungen notwendig. Ein &amp;#8222;Knowledge-Exam&amp;#8220;, und ein &amp;#8222;Lab-Exam&amp;#8220;. Die Kosten liegen bei dem ersteren bei 367,- Euro. Das Lab-Exam ist das teurere, mit 2000 USD, was z. Z. rund 1550 EUR entspricht. Damit liegen die gesamt-Pr&amp;#252;fungskosten also unter 2000 Euro. :-) )&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; PS: M&amp;#246;glicherweise ist das bei den Nicht-SQL Zertifizierungen etwas anders. Dabei sind mir Details nicht bekannt.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Insofern also die Frage unter Experten: k&amp;#246;nnen 2000 Euro so abschreckend viel sein? &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Um mal aus dem N&amp;#228;hk&amp;#228;stchen zu plaudern, was ich in meine Fortbildung investiere:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Ich bin jedes Jahr in den USA auf der gro&amp;#223;en SQL Server Konferenz. Ich bin zwar bekannterma&amp;#223;en dort i.d.R. als Sprecher geladen, aber nat&amp;#252;rlich sind die Reisekosten nicht unerheblich. Den sogenannten &amp;#8222;Verdienstausfall&amp;#8220; spreche ich jetzt nicht weiter an, denn das gilt f&amp;#252;r jegliche Fortbildung. Und ohne Fortbildung bleibt man stehen. - Das muss man sich einfach Wert sein.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Dazu kommen mindestens 2-3 weiteren Konferenzen, die dann noch so in Europa stattfinden und wo ich auch spreche. F&amp;#252;r Vortr&amp;#228;ge muss man sich vorbereiten und im Zweifelsfall auch lernen. Selbiges gilt, wenn ich Schulungen gebe, ganz gleich welcher Art. Da kommen also schon einige tausend Euro zusammen.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Aber wie gesagt, diese Zertifizierung spricht auch eher Experten an, und da gehe ich davon aus, das das keine Summe ist, f&amp;#252;r die man lange sparen muss. Und wenn doch, dann w&amp;#228;re das eine Gelegenheit, einen h&amp;#246;heren Stundensatz zu verhandeln, denn wer mehr wei&amp;#223;, ist im Zweifelsfall auch effizienter und spart seinem Kunden am Ende Zeit und Geld :)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Und sp&amp;#228;testens bei wirklich komplexen Problemen geht man entweder an Microsoft CSS, oder eben einen unabh&amp;#228;ngigen MCM.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;3) 11% - Zu breites Know-How erforderlich&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- so ist das letztlich auch gedacht :-)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Mehr auf das Thema &amp;#8222;Know-How&amp;#8220; gehe ich noch unter den Punkten 8 und 9 ein.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;4) 51% - Kein finanzieller Nutzen&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- Das kann man gelten lassen, da man seinen Stundensatz nicht unbedingt mal eben anheben kann und sollte. Die Frage ist nur: sollte das DER Grund sein f&amp;#252;r die Zertifizierung?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;F&amp;#252;r mich pers&amp;#246;nlich ist eine Zertifizierung vielmehr ein guter Grund, sich Zeit nehmen zu m&amp;#252;ssen, sich also zu disziplinieren, um Dinge zu lernen, die man bisher entweder gar nicht kannte, oder noch nicht ben&amp;#246;tigt hat. Immer mit dem Zweck, am Ende aus einer m&amp;#246;glichst gro&amp;#223;en Bandbreite an Techniken sch&amp;#246;pfen zu k&amp;#246;nnen, wieder ein wenig mehr zu wissen. Vorw&amp;#228;rtskommen also.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;5) 28% - Kein Anwendungsbedarf f&amp;#252;r das erforderliche Know-How&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- Ja, das kann ein Grund sein, gerade wenn man vornehmlich in relativ langfristigen Projekten arbeitet, oder auch schlicht keine extrem anspruchsvolle Umgebung zu verwalten hat.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;6) 17% - Fehlendes Trainingsangebot&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- Das ist ein nur von wenigen als wichtig erachteter Punkt. Dennoch eine kurze Ausf&amp;#252;hrung:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Was f&amp;#252;r Schulungen gibt es f&amp;#252;r den Erwerb des MCTS/MCITP, neu MCSA/MCSE?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Es gibt die sogenannten MOC-Kurse, in der Vergangenheit zu recht wegen fehlendem Praxisbezug und auch Fehlerhaftigkeit bem&amp;#228;ngelt. Um einen solchen zu geben, muss man im Wesentlichen ein MCT (Microsoft Certified Trainer) sein, und auch auf dem Produkt, also z.B. SQL Server ITPro -Level zertifiziert sein. (Das sich viele nicht an diesen Mindeststandard gehalten haben, hat meines Erachtens viel zu dem schlechten Ruf der MOC-Kurse beigetragen &amp;#8211; am Ende musste man auch wissen, welcher Schulungsanbieter welche Trainer einsetzt)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Dann gab es schon immer ein mannigfaltiges Schulungsangebot auf dem freien Markt. Denn letztlich ist f&amp;#252;r das Bestehen der Microsoft-Examen nur das Know-How erforderlich, nicht der Nachweis einer bestimmten Schulung (wie es beispielsweise bei Informatica der Fall ist)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Wie ist das nun beim MCM/MCSM?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Nun, auch da kommt es letztlich nur auf das Know-How an. Zwar ist die Durchfallquote bei der Lab mit 80% sehr hoch, aber schon beim zweiten Versuch schaffen es rund 50% - das wei&amp;#223; ich aus Gespr&amp;#228;chen mit den damaligen Master-Programm-Manager.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Und welches Trainingsangebot gibt es nun also, wenn man sich in einzelnen Technologien noch verbessern m&amp;#246;chte? Zu Beginn bot Microsoft Schulungen direkt auf dem Campus an. Aufgrund von Qualit&amp;#228;tsproblemen (! &amp;#8211; Ja, richtig geh&amp;#246;rt) wurde das dann jedoch ausgelagert und letztlich darf jeder Schulungen mit dem Ziel &amp;#8222;Master&amp;#8220; durchf&amp;#252;hren. (Aktuell sickern Informationen durch, dass es eine Neuauflage von Bootcamps in Redmond geben wird)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; In den USA gibt es derzeit 2 mir bekannte Anbieter (SQLSkills: &lt;a href=&quot;http://www.sqlskills.com&quot;&gt;www.sqlskills.com&lt;/a&gt; und SQL Internals: &lt;a href=&quot;http://www.sqlserverinternals.com&quot;&gt;www.sqlserverinternals.com&lt;/a&gt; ) &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Da Paul Randall von SQLSkills der ehemaliger Leiter des Microsoft-internen Vorl&amp;#228;ufers des SQL Server Master-Programms ist, und durch seine Arbeit an DBCC CHECKDB &amp;#252;ber detailliertes Know-How und internes Wissen &amp;#252;ber die Engine verf&amp;#252;gt, habe ich mir selber alle 4 Wochen Training bei Redmond mit ihm geg&amp;#246;nnt. Einfach, um auch noch das letzte an Know-How erlangen zu k&amp;#246;nnen, welches sich nicht &amp;#252;ber Blogs und B&amp;#252;cher erlangen l&amp;#228;sst.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; War das notwendig f&amp;#252;r die Pr&amp;#252;fungen? &amp;#8211; Nein, absolut nicht. Das ist nur pers&amp;#246;nlicher Ehrgeiz und Anspruch &amp;#8211; sowie einfach Spa&amp;#223; am Lernen und Wissen erlangen :-)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Dazu kommt nat&amp;#252;rlich auch das Networking mit den Kollegen in den USA. F&amp;#252;r mich war das also das Richtige zu tun, zumal ich mich auch keinem gegen&amp;#252;ber wegen der Zeit rechtfertigen muss :-)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Wie sieht es in Deutschland aus?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Hier bietet Microsoft nat&amp;#252;rlich auch nichts an.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Ich darf aber auf mein eigenes Trainingsangebot hinweisen. Als MCT und MCM f&amp;#252;hre ich seit diesem Fr&amp;#252;hjahr die SQL Server Master-Classes durch. Die erste Runde (Extended Events sogar 2mal) wird im Juni beendet sein. Die n&amp;#228;chsten Termine werden im Moment f&amp;#252;r den Oktober 2013 geplant.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; F&amp;#252;r alle, die mehr wissen wollen (&amp;#8222;Hach, diese Doppeldeutigkeit&amp;#8220; :-D): &lt;a href=&quot;http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm&quot;&gt;www.sarpedonqualitylab.com/SQL_Master-Classes.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;7) 4% - Zertifizierung mir unbekannt&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- Puh, immerhin in den IT Foren ist der MCM also doch gut bekannt.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;8) 40% - Zertifizierung meinen Kunden unbekannt&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- Ja, das ist sicherlich so, dass dieser Titel noch nicht den Bekanntheitsgrad hat, wie er sie sicherlich verdient hat. Von einem Bekanntheitsgrad wie des seit &amp;#252;ber einem Jahrzehnt etablierten MVP ist der MCM weit entfernt. Dabei ist der MVP auch kein Zertifikat sondern ein Award. (Es findet also kein Examen statt. - &lt;a href=&quot;http://www.insidesql.org/blogs/mvp.microsoft.com&quot;&gt;mvp.microsoft.com&lt;/a&gt;) . Die neuerliche Umbenennung zum MCSM (&amp;#8230;Solutions Master) wird sicherlich auch wenig helfen.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Und noch etwas m&amp;#246;chte ich erw&amp;#228;hnen, wie mir aus Gespr&amp;#228;chen mit Paul Randall, der die Pr&amp;#252;fung mit entwickelt hat, bewusst wurde: Der MCM ist nicht zuletzt deswegen erschaffen worden, um eine Zertifizierung anbieten zu k&amp;#246;nnen, welche sich nicht durch unlautere Methoden leichter beschaffen l&amp;#228;sst.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- Siehe die Inflation von MCSE&amp;#8217;s (dem alten Microsoft Certified System Engineer) aber letztlich auch von MCTS und MCITP, erzeugt durch Boot Camp Angebote, wo schnell viel auswendig gelernt wurde, um genau auf die Pr&amp;#252;fungsfragen vorbereitet zu sein &amp;#8211; oder durch die sogenannten &amp;#8222;Braindumps&amp;#8220; &amp;#160;&amp;#8211; anstelle wirklich praktisches Wissen zu erlangen, wof&amp;#252;r es keine Abk&amp;#252;rzungen gibt, sondern Jahrelange Erfahrung. Darunter haben die Zertifizierungen so gelitten, das ein blo&amp;#223;es Zertifikat heute doch eher wenig bedeutet, bis man herausgefunden hat, was der Bewerber wirklich kann.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Die Pr&amp;#252;fungen zum MCM sind genau deswegen zum einen so teuer und komplex, um die Weitergabe von Pr&amp;#252;fungsinterna zu verhindern, und zum anderen eben auch so aufgebaut, das man sie nur mit echter Praxiserfahrung bestehen kann. Es ist keine Pr&amp;#252;fung, an welcher man sich austesten kann und sollte, um zu &amp;#252;ben, sondern nach 2 sp&amp;#228;testens Versuchen sollte sie zu bestehen sein &amp;#8211; ansonsten braucht man vielleicht einfach noch ein paar J&amp;#228;hrchen und komplexere Aufgaben (&amp;#8222;O-Ton&amp;#8220;) &amp;#8211; deswegen auch die verh&amp;#228;ltnism&amp;#228;&amp;#223;ig langen Fristen f&amp;#252;r ein Retake.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Und wenn diese Gewissheit, auf gepr&amp;#252;fte praktischer Erfahrung im L&amp;#246;sen von komplexen Problemen verweisen zu k&amp;#246;nnen kein guter Grund sind, dies seinen Kunden zu erkl&amp;#228;ren.. :-)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Das &amp;#8222;Sich abheben&amp;#8220; ist eher ein Side-Effekt. Entscheidender ist der Nachweis/Beweis, den die bisherigen Zertifizierungen leider nicht erf&amp;#252;llen konnten.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;(Hierin ist eine versteckte Aufforderung zum Handeln zu sehen.. :-))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;9) 9% - Unrealistische Pr&amp;#252;fungsthemen&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;- ich nehme mal an hiermit ist eher Punkt 3 oder Punkt 5 gemeint. (&amp;#8222;Zu breites Know-How erforderlich&amp;#8220;, &amp;#8222;Kein Anwendungsbedarf f&amp;#252;r das erforderliche Know-How&amp;#8220;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Ich kann jedenfalls versichern, dass s&amp;#228;mtliche Aufgaben sehr wohl praxisrelevant sind. Mehr ins Detail m&amp;#246;chte ich hier nicht gehen, bevor ich mich Verplappere ;-)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; - Aber wenn jemand der f&amp;#252;r das MCM Programm das hier lesen sollte: Es d&amp;#252;rfte auch noch ein St&amp;#252;ck mehr sein, sowohl Breite, als auch durchaus Komplexit&amp;#228;t :-D&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;strong&gt;10) 2% - Leider (noch) nicht bestanden (Alles anonym :-) )&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;-&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Immerhin einer der Stimmabgebenden hat sich die Pr&amp;#252;fung auch selber angesehen. Ich hoffe, es f&amp;#252;hlen sich bald noch weitere dazu ermutigt.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;An dieser Stelle nochmal vielen Dank an alle Teilnehmer der Umfrage.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Hier geht es zu einer kleinen Diskussion, die sich zu dem Poll bei XING entwickelt hat. (Dieser Link ist jedoch nicht &amp;#246;ffentlich. Daf&amp;#252;r ist eine Xing- sowie Gruppenmitgliedschaft erforderlich.):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&lt;a href=&quot;https://www.xing.com/net/pri23e6c8x/mcertified/fragen-und-antworten-q-a-139524/umfrage-zur-zertifizierung-als-microsoft-certified-master-solutions-master-44173596/&quot;&gt;www.xing.com/net/pri23e6c8x/mcertified/fragen-und-antworten-q-a-139524/umfrage-zur-zertifizierung-als-microsoft-certified-master-solutions-master-44173596/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Auf &lt;a href=&quot;http://sqlpodcast.de/index.php/2013/05/24/003-microsoft-certified-master/&quot;&gt;sqlpodcast.de/index.php/2013/05/24/003-microsoft-certified-master/&lt;/a&gt; wurde k&amp;#252;rzlich auch ein Interview ver&amp;#246;ffentlicht, in welchem ich pers&amp;#246;nlich auf einige Aspekte der Zertifizierung zum MCM eingehe.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Inhalte:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Microsoft-Zertifizierungen und Lernangebot&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Warum Zertifizierungen Sinn machen &amp;#8211; und wann f&amp;#252;r wen oder f&amp;#252;r wen auch nicht&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Was den MCM die Pr&amp;#252;fung zum MCM von den anderen &amp;#8222;Breitenzertifizierungen&amp;#8220; unterscheidet&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; Das Maestro-Programm (Das Gegenst&amp;#252;ck zum MCM f&amp;#252;r die BI-Suite des SQL Server) und seine ungewisse Zukunft.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Ein weiteres Interview mit mir, durchgef&amp;#252;hrt im M&amp;#228;rz 2013 auf den Frankfurter Datenbanktagen, m&amp;#246;chte ich meinen Lesern auch nicht vorenthalten: &lt;a href=&quot;http://www.frankfurter-datenbanktage.de/index.php/interview-mit-andreas-wolter&quot;&gt;www.frankfurter-datenbanktage.de/index.php/interview-mit-andreas-wolter&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Zum Schluss m&amp;#246;chte ich noch festhalten, das wir als SQL Server Spezialisten, die Vorteile unserer Community, speziell der PASS (&lt;a href=&quot;http://www.sqlpass.de&quot;&gt;www.sqlpass.de&lt;/a&gt;) gar nicht genug betonen kann. Damit stehen wir unter allen Produktgruppen bei Microsoft wirklich stark heraus.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Mehr zum Microsoft Certified Master Programm&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; &lt;a href=&quot;http://www.microsoft.com/de-de/business/learning/master.aspx&quot;&gt;www.microsoft.com/de-de/business/learning/master.aspx&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Die SQL Server Master-Classes von Sarpedon Quality Lab&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; &lt;a href=&quot;http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm&quot;&gt;www.sarpedonqualitylab.com/SQL_Master-Classes.htm&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Die deutsche SQL Server Community&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt; &lt;a href=&quot;http://www.sqlpass.de&quot;&gt;www.sqlpass.de&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Sch&amp;#246;ne Gr&amp;#252;&amp;#223;e&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: verdana,geneva;&quot;&gt;Andreas&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>&#160;<span style="font-family: verdana,geneva;">Diesmal geht es in meinem Blog weniger technisch zu:</span></p>
<p><span style="font-family: verdana,geneva;">Ich habe vor kurzem bei XING eine kleine Umfrage durchf&#252;hren lassen, um einmal zu erfahren, warum es weltweit, aber auch insbesondere im Deutschen Raum so wenige MCMs gibt. - Speziell au&#223;erhalb von Microsoft-Angestellten selber schwankt die Anzahl je nach Produkt zwischen 0 und 6.</span></p>
<p><span style="font-family: verdana,geneva;">Die offiziellen Zahlen Ende Mai 2013 wie folgt (vornean die Gesamtzahl, in Klammern die Anzahl der MCMs davon, die nicht direkt f&#252;r Microsoft arbeiten):</span><br /> <br /><span style="font-family: verdana,geneva;"> 0 (0) Windows Advanced Infrastructure (hier gibt es gleich keine MCMs in Deutschland, aber weltweit auch nur 16)</span><br /><span style="font-family: verdana,geneva;"> 5 (4) Windows Server Directory</span><br /><span style="font-family: verdana,geneva;"> 9 (3) SQL Server&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><br /><span style="font-family: verdana,geneva;"> 9 (6) SharePoint</span><br /><span style="font-family: verdana,geneva;"> 7 (4) Microsoft Office Communications Server and Lync Server 2010</span><br /><span style="font-family: verdana,geneva;"> 12 (5) Microsoft Exchange Server</span></p>
<p><span style="font-family: verdana,geneva;">(Quelle: <a href="http://www.microsoft.com/learning/en/us/mcm-certification.aspx">www.microsoft.com/learning/en/us/mcm-certification.aspx</a> - Hinweis, diese Quelle erhebt keinen Anspruch auf Vollst&#228;ndigkeit, ist aber die beste, die es gibt und kann daher gut f&#252;r einen Vergleich herangezogen werden.)</span></p>
<ul>
<li><span style="font-family: verdana,geneva;">&#160;seit Beginn der Umfrage sind 2 MCMs f&#252;r SQL Server 2008 dazugekommen, das sind 28%, kurz vor Auslaufen der Pr&#252;fung :-)</span></li>
<li><span style="font-family: verdana,geneva;">Das hei&#223;t, dass ich nun nach einem Jahr nicht mehr der einzige von Microsoft unabh&#228;ngige MCM f&#252;r SQL Server in Deutschland bin, sondern nur noch der Erste. :-)</span></li>
<ul>
<li><span style="font-family: verdana,geneva; font-size: small;">siehe auch <a href="http://www.insidesql.org/blogs/uricken/2013/05/24/mcm-sql-server-2008">www.insidesql.org/blogs/uricken/2013/05/24/mcm-sql-server-2008</a></span></li>
</ul>
</ul>
<p><span style="font-family: verdana,geneva;"><br /></span></p>
<p><span style="font-family: verdana,geneva;">Was sind nun die Gr&#252;nde f&#252;r diese geringe Anzahl? <br /></span></p>
<p><span style="font-family: verdana,geneva;">Ganz abgesehen davon, das mit Sicherheit die gestellten Anspr&#252;che ein Grund sind, sind bei der Umfrage folgende Antworten Zusammengekommen:</span></p>
<p><span style="font-family: verdana,geneva;">&#160;<img src="http://sarpedonqualitylab.com/sql-images/sql-articles/1305_UmfrageErgebnisse_MCM_MCSM.png" alt="UmfrageErgebnisse_MCM_MCSM" width="398" height="358" /></span></p>
<p><span style="font-family: verdana,geneva; font-size: small;">- Bislang haben sich 47 Teilnehmer an der Umfrage beteiligt. (Noch offen bis Ende Mai &#8211; ich werde die finalen Ergebnisse hier dann nochmal &#252;bernehmen)</span><br /><span style="font-family: verdana,geneva;"> Hier geht es zur Umfrage: <a href="https://www.xing.com/app/newsfeed?op=poll_detail;id=9673">www.xing.com/app/newsfeed?op=poll_detail;id=9673</a></span></p>
<p><span style="font-family: verdana,geneva;">&#160;</span></p>
<p><span style="font-family: verdana,geneva;">Nun kann man dort sicherlich vieles vermuten, und ich erhebe auch nicht den Anspruch einer wissenschaftlich fundierten Analyse. Aber einige Dinge fallen doch sehr ins Auge, darum m&#246;chte ich die einzelnen Punkte frei aus meiner (pers&#246;nlichen) Sicht kommentieren.</span></p>
<p><span style="font-family: verdana,geneva;"><strong>1) 57% - Zeitlicher Aufwand</strong></span></p>
<p><span style="font-family: verdana,geneva;">-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; hier w&#228;re nat&#252;rlich eine Aufteilung in WAS den zeitlichen Aufwand denn ausmacht interessant gewesen. Aber eigentlich k&#246;nnen es nur 2 Dinge sein: Die Pr&#252;fung selber. &#8211; mit 5,5 Stunden ist die Lab in der Tat zeitaufw&#228;ndiger als alle anderen Pr&#252;fungen. Aber kann das so viel ausmachen?</span><br /><span style="font-family: verdana,geneva;"> Bleibt: Die Vorbereitung, also das Lernen der Stoffe, die man vielleicht noch nicht in hinreichender Tiefe beherrscht. Interessanterweise ist Punkt 3 (erforderliches Know-How) daf&#252;r offenbar gar nicht das Problem. &#8230;</span></p>
<p><span style="font-family: verdana,geneva;"><strong>2) 57% - Zu teuer (Pr&#252;fung)</strong></span></p>
<p><span style="font-family: verdana,geneva;">- zugegeben, die Pr&#252;fung ist nicht &#8222;billig&#8220;&#8220;.</span><br /><span style="font-family: verdana,geneva;"> (F&#252;r das Erreichen dieser Zertifizierung sind ja 2 Pr&#252;fungen notwendig. Ein &#8222;Knowledge-Exam&#8220;, und ein &#8222;Lab-Exam&#8220;. Die Kosten liegen bei dem ersteren bei 367,- Euro. Das Lab-Exam ist das teurere, mit 2000 USD, was z. Z. rund 1550 EUR entspricht. Damit liegen die gesamt-Pr&#252;fungskosten also unter 2000 Euro. :-) )</span><br /><span style="font-family: verdana,geneva;"> PS: M&#246;glicherweise ist das bei den Nicht-SQL Zertifizierungen etwas anders. Dabei sind mir Details nicht bekannt.</span></p>
<p><span style="font-family: verdana,geneva;">Insofern also die Frage unter Experten: k&#246;nnen 2000 Euro so abschreckend viel sein? </span><br /><span style="font-family: verdana,geneva;"> Um mal aus dem N&#228;hk&#228;stchen zu plaudern, was ich in meine Fortbildung investiere:</span><br /><span style="font-family: verdana,geneva;"> Ich bin jedes Jahr in den USA auf der gro&#223;en SQL Server Konferenz. Ich bin zwar bekannterma&#223;en dort i.d.R. als Sprecher geladen, aber nat&#252;rlich sind die Reisekosten nicht unerheblich. Den sogenannten &#8222;Verdienstausfall&#8220; spreche ich jetzt nicht weiter an, denn das gilt f&#252;r jegliche Fortbildung. Und ohne Fortbildung bleibt man stehen. - Das muss man sich einfach Wert sein.</span><br /><span style="font-family: verdana,geneva;"> Dazu kommen mindestens 2-3 weiteren Konferenzen, die dann noch so in Europa stattfinden und wo ich auch spreche. F&#252;r Vortr&#228;ge muss man sich vorbereiten und im Zweifelsfall auch lernen. Selbiges gilt, wenn ich Schulungen gebe, ganz gleich welcher Art. Da kommen also schon einige tausend Euro zusammen.</span><br /><span style="font-family: verdana,geneva;"> Aber wie gesagt, diese Zertifizierung spricht auch eher Experten an, und da gehe ich davon aus, das das keine Summe ist, f&#252;r die man lange sparen muss. Und wenn doch, dann w&#228;re das eine Gelegenheit, einen h&#246;heren Stundensatz zu verhandeln, denn wer mehr wei&#223;, ist im Zweifelsfall auch effizienter und spart seinem Kunden am Ende Zeit und Geld :)</span><br /><span style="font-family: verdana,geneva;"> Und sp&#228;testens bei wirklich komplexen Problemen geht man entweder an Microsoft CSS, oder eben einen unabh&#228;ngigen MCM.</span></p>
<p><span style="font-family: verdana,geneva;"><strong>3) 11% - Zu breites Know-How erforderlich</strong></span></p>
<p><span style="font-family: verdana,geneva;">- so ist das letztlich auch gedacht :-)</span><br /><span style="font-family: verdana,geneva;"> Mehr auf das Thema &#8222;Know-How&#8220; gehe ich noch unter den Punkten 8 und 9 ein.</span></p>
<p><span style="font-family: verdana,geneva;"><strong>4) 51% - Kein finanzieller Nutzen</strong></span></p>
<p><span style="font-family: verdana,geneva;">- Das kann man gelten lassen, da man seinen Stundensatz nicht unbedingt mal eben anheben kann und sollte. Die Frage ist nur: sollte das DER Grund sein f&#252;r die Zertifizierung?</span></p>
<p><span style="font-family: verdana,geneva;">F&#252;r mich pers&#246;nlich ist eine Zertifizierung vielmehr ein guter Grund, sich Zeit nehmen zu m&#252;ssen, sich also zu disziplinieren, um Dinge zu lernen, die man bisher entweder gar nicht kannte, oder noch nicht ben&#246;tigt hat. Immer mit dem Zweck, am Ende aus einer m&#246;glichst gro&#223;en Bandbreite an Techniken sch&#246;pfen zu k&#246;nnen, wieder ein wenig mehr zu wissen. Vorw&#228;rtskommen also.</span></p>
<p><span style="font-family: verdana,geneva;"><strong>5) 28% - Kein Anwendungsbedarf f&#252;r das erforderliche Know-How</strong></span></p>
<p><span style="font-family: verdana,geneva;">- Ja, das kann ein Grund sein, gerade wenn man vornehmlich in relativ langfristigen Projekten arbeitet, oder auch schlicht keine extrem anspruchsvolle Umgebung zu verwalten hat.</span></p>
<p><span style="font-family: verdana,geneva;"><strong>6) 17% - Fehlendes Trainingsangebot</strong></span></p>
<p><span style="font-family: verdana,geneva;">- Das ist ein nur von wenigen als wichtig erachteter Punkt. Dennoch eine kurze Ausf&#252;hrung:</span><br /><span style="font-family: verdana,geneva;"> Was f&#252;r Schulungen gibt es f&#252;r den Erwerb des MCTS/MCITP, neu MCSA/MCSE?</span><br /><span style="font-family: verdana,geneva;"> Es gibt die sogenannten MOC-Kurse, in der Vergangenheit zu recht wegen fehlendem Praxisbezug und auch Fehlerhaftigkeit bem&#228;ngelt. Um einen solchen zu geben, muss man im Wesentlichen ein MCT (Microsoft Certified Trainer) sein, und auch auf dem Produkt, also z.B. SQL Server ITPro -Level zertifiziert sein. (Das sich viele nicht an diesen Mindeststandard gehalten haben, hat meines Erachtens viel zu dem schlechten Ruf der MOC-Kurse beigetragen &#8211; am Ende musste man auch wissen, welcher Schulungsanbieter welche Trainer einsetzt)</span><br /><span style="font-family: verdana,geneva;"> Dann gab es schon immer ein mannigfaltiges Schulungsangebot auf dem freien Markt. Denn letztlich ist f&#252;r das Bestehen der Microsoft-Examen nur das Know-How erforderlich, nicht der Nachweis einer bestimmten Schulung (wie es beispielsweise bei Informatica der Fall ist)</span></p>
<p><span style="font-family: verdana,geneva;">Wie ist das nun beim MCM/MCSM?</span><br /><span style="font-family: verdana,geneva;"> Nun, auch da kommt es letztlich nur auf das Know-How an. Zwar ist die Durchfallquote bei der Lab mit 80% sehr hoch, aber schon beim zweiten Versuch schaffen es rund 50% - das wei&#223; ich aus Gespr&#228;chen mit den damaligen Master-Programm-Manager.</span><br /><span style="font-family: verdana,geneva;"> Und welches Trainingsangebot gibt es nun also, wenn man sich in einzelnen Technologien noch verbessern m&#246;chte? Zu Beginn bot Microsoft Schulungen direkt auf dem Campus an. Aufgrund von Qualit&#228;tsproblemen (! &#8211; Ja, richtig geh&#246;rt) wurde das dann jedoch ausgelagert und letztlich darf jeder Schulungen mit dem Ziel &#8222;Master&#8220; durchf&#252;hren. (Aktuell sickern Informationen durch, dass es eine Neuauflage von Bootcamps in Redmond geben wird)</span><br /><span style="font-family: verdana,geneva;"> In den USA gibt es derzeit 2 mir bekannte Anbieter (SQLSkills: <a href="http://www.sqlskills.com">www.sqlskills.com</a> und SQL Internals: <a href="http://www.sqlserverinternals.com">www.sqlserverinternals.com</a> ) </span><br /><span style="font-family: verdana,geneva;"> Da Paul Randall von SQLSkills der ehemaliger Leiter des Microsoft-internen Vorl&#228;ufers des SQL Server Master-Programms ist, und durch seine Arbeit an DBCC CHECKDB &#252;ber detailliertes Know-How und internes Wissen &#252;ber die Engine verf&#252;gt, habe ich mir selber alle 4 Wochen Training bei Redmond mit ihm geg&#246;nnt. Einfach, um auch noch das letzte an Know-How erlangen zu k&#246;nnen, welches sich nicht &#252;ber Blogs und B&#252;cher erlangen l&#228;sst.</span><br /><span style="font-family: verdana,geneva;"> War das notwendig f&#252;r die Pr&#252;fungen? &#8211; Nein, absolut nicht. Das ist nur pers&#246;nlicher Ehrgeiz und Anspruch &#8211; sowie einfach Spa&#223; am Lernen und Wissen erlangen :-)</span><br /><span style="font-family: verdana,geneva;"> Dazu kommt nat&#252;rlich auch das Networking mit den Kollegen in den USA. F&#252;r mich war das also das Richtige zu tun, zumal ich mich auch keinem gegen&#252;ber wegen der Zeit rechtfertigen muss :-)</span></p>
<p><span style="font-family: verdana,geneva;">Wie sieht es in Deutschland aus?</span><br /><span style="font-family: verdana,geneva;"> Hier bietet Microsoft nat&#252;rlich auch nichts an.</span><br /><span style="font-family: verdana,geneva;"> Ich darf aber auf mein eigenes Trainingsangebot hinweisen. Als MCT und MCM f&#252;hre ich seit diesem Fr&#252;hjahr die SQL Server Master-Classes durch. Die erste Runde (Extended Events sogar 2mal) wird im Juni beendet sein. Die n&#228;chsten Termine werden im Moment f&#252;r den Oktober 2013 geplant.</span><br /><span style="font-family: verdana,geneva;"> F&#252;r alle, die mehr wissen wollen (&#8222;Hach, diese Doppeldeutigkeit&#8220; :-D): <a href="http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm">www.sarpedonqualitylab.com/SQL_Master-Classes.htm</a></span></p>
<p><span style="font-family: verdana,geneva;"><strong>7) 4% - Zertifizierung mir unbekannt</strong></span></p>
<p><span style="font-family: verdana,geneva;">- Puh, immerhin in den IT Foren ist der MCM also doch gut bekannt.</span></p>
<p><span style="font-family: verdana,geneva;"><strong>8) 40% - Zertifizierung meinen Kunden unbekannt</strong></span></p>
<p><span style="font-family: verdana,geneva;">- Ja, das ist sicherlich so, dass dieser Titel noch nicht den Bekanntheitsgrad hat, wie er sie sicherlich verdient hat. Von einem Bekanntheitsgrad wie des seit &#252;ber einem Jahrzehnt etablierten MVP ist der MCM weit entfernt. Dabei ist der MVP auch kein Zertifikat sondern ein Award. (Es findet also kein Examen statt. - <a href="http://www.insidesql.org/blogs/mvp.microsoft.com">mvp.microsoft.com</a>) . Die neuerliche Umbenennung zum MCSM (&#8230;Solutions Master) wird sicherlich auch wenig helfen.</span></p>
<p><span style="font-family: verdana,geneva;">Und noch etwas m&#246;chte ich erw&#228;hnen, wie mir aus Gespr&#228;chen mit Paul Randall, der die Pr&#252;fung mit entwickelt hat, bewusst wurde: Der MCM ist nicht zuletzt deswegen erschaffen worden, um eine Zertifizierung anbieten zu k&#246;nnen, welche sich nicht durch unlautere Methoden leichter beschaffen l&#228;sst.</span></p>
<p><span style="font-family: verdana,geneva;">- Siehe die Inflation von MCSE&#8217;s (dem alten Microsoft Certified System Engineer) aber letztlich auch von MCTS und MCITP, erzeugt durch Boot Camp Angebote, wo schnell viel auswendig gelernt wurde, um genau auf die Pr&#252;fungsfragen vorbereitet zu sein &#8211; oder durch die sogenannten &#8222;Braindumps&#8220; &#160;&#8211; anstelle wirklich praktisches Wissen zu erlangen, wof&#252;r es keine Abk&#252;rzungen gibt, sondern Jahrelange Erfahrung. Darunter haben die Zertifizierungen so gelitten, das ein blo&#223;es Zertifikat heute doch eher wenig bedeutet, bis man herausgefunden hat, was der Bewerber wirklich kann.</span></p>
<p><span style="font-family: verdana,geneva;">Die Pr&#252;fungen zum MCM sind genau deswegen zum einen so teuer und komplex, um die Weitergabe von Pr&#252;fungsinterna zu verhindern, und zum anderen eben auch so aufgebaut, das man sie nur mit echter Praxiserfahrung bestehen kann. Es ist keine Pr&#252;fung, an welcher man sich austesten kann und sollte, um zu &#252;ben, sondern nach 2 sp&#228;testens Versuchen sollte sie zu bestehen sein &#8211; ansonsten braucht man vielleicht einfach noch ein paar J&#228;hrchen und komplexere Aufgaben (&#8222;O-Ton&#8220;) &#8211; deswegen auch die verh&#228;ltnism&#228;&#223;ig langen Fristen f&#252;r ein Retake.</span></p>
<p><span style="font-family: verdana,geneva;">Und wenn diese Gewissheit, auf gepr&#252;fte praktischer Erfahrung im L&#246;sen von komplexen Problemen verweisen zu k&#246;nnen kein guter Grund sind, dies seinen Kunden zu erkl&#228;ren.. :-)</span></p>
<p><span style="font-family: verdana,geneva;">Das &#8222;Sich abheben&#8220; ist eher ein Side-Effekt. Entscheidender ist der Nachweis/Beweis, den die bisherigen Zertifizierungen leider nicht erf&#252;llen konnten.</span></p>
<p><span style="font-family: verdana,geneva;">(Hierin ist eine versteckte Aufforderung zum Handeln zu sehen.. :-))</span></p>
<p><span style="font-family: verdana,geneva;"><strong>9) 9% - Unrealistische Pr&#252;fungsthemen</strong></span></p>
<p><span style="font-family: verdana,geneva;">- ich nehme mal an hiermit ist eher Punkt 3 oder Punkt 5 gemeint. (&#8222;Zu breites Know-How erforderlich&#8220;, &#8222;Kein Anwendungsbedarf f&#252;r das erforderliche Know-How&#8220;)</span><br /><span style="font-family: verdana,geneva;"> Ich kann jedenfalls versichern, dass s&#228;mtliche Aufgaben sehr wohl praxisrelevant sind. Mehr ins Detail m&#246;chte ich hier nicht gehen, bevor ich mich Verplappere ;-)</span><br /><span style="font-family: verdana,geneva;"> - Aber wenn jemand der f&#252;r das MCM Programm das hier lesen sollte: Es d&#252;rfte auch noch ein St&#252;ck mehr sein, sowohl Breite, als auch durchaus Komplexit&#228;t :-D</span></p>
<p><span style="font-family: verdana,geneva;"><strong>10) 2% - Leider (noch) nicht bestanden (Alles anonym :-) )</strong></span></p>
<p><span style="font-family: verdana,geneva;">-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Immerhin einer der Stimmabgebenden hat sich die Pr&#252;fung auch selber angesehen. Ich hoffe, es f&#252;hlen sich bald noch weitere dazu ermutigt.</span></p>
<p><span style="font-family: verdana,geneva;"><br /></span></p>
<p><span style="font-family: verdana,geneva;">An dieser Stelle nochmal vielen Dank an alle Teilnehmer der Umfrage.</span></p>
<p><span style="font-family: verdana,geneva;">&#160;</span></p>
<p><span style="font-family: verdana,geneva;">Hier geht es zu einer kleinen Diskussion, die sich zu dem Poll bei XING entwickelt hat. (Dieser Link ist jedoch nicht &#246;ffentlich. Daf&#252;r ist eine Xing- sowie Gruppenmitgliedschaft erforderlich.):</span></p>
<p><span style="font-family: verdana,geneva;"><a href="https://www.xing.com/net/pri23e6c8x/mcertified/fragen-und-antworten-q-a-139524/umfrage-zur-zertifizierung-als-microsoft-certified-master-solutions-master-44173596/">www.xing.com/net/pri23e6c8x/mcertified/fragen-und-antworten-q-a-139524/umfrage-zur-zertifizierung-als-microsoft-certified-master-solutions-master-44173596/</a></span></p>
<p><span style="font-family: verdana,geneva;">Auf <a href="http://sqlpodcast.de/index.php/2013/05/24/003-microsoft-certified-master/">sqlpodcast.de/index.php/2013/05/24/003-microsoft-certified-master/</a> wurde k&#252;rzlich auch ein Interview ver&#246;ffentlicht, in welchem ich pers&#246;nlich auf einige Aspekte der Zertifizierung zum MCM eingehe.</span></p>
<ul>
<li><span style="font-family: verdana,geneva;">Inhalte:</span><br /><span style="font-family: verdana,geneva;"> Microsoft-Zertifizierungen und Lernangebot</span><br /><span style="font-family: verdana,geneva;"> Warum Zertifizierungen Sinn machen &#8211; und wann f&#252;r wen oder f&#252;r wen auch nicht</span><br /><span style="font-family: verdana,geneva;"> Was den MCM die Pr&#252;fung zum MCM von den anderen &#8222;Breitenzertifizierungen&#8220; unterscheidet</span><br /><span style="font-family: verdana,geneva;"> Das Maestro-Programm (Das Gegenst&#252;ck zum MCM f&#252;r die BI-Suite des SQL Server) und seine ungewisse Zukunft.</span></li>
</ul>
<p><span style="font-family: verdana,geneva;">Ein weiteres Interview mit mir, durchgef&#252;hrt im M&#228;rz 2013 auf den Frankfurter Datenbanktagen, m&#246;chte ich meinen Lesern auch nicht vorenthalten: <a href="http://www.frankfurter-datenbanktage.de/index.php/interview-mit-andreas-wolter">www.frankfurter-datenbanktage.de/index.php/interview-mit-andreas-wolter</a></span></p>
<p><span style="font-family: verdana,geneva;">Zum Schluss m&#246;chte ich noch festhalten, das wir als SQL Server Spezialisten, die Vorteile unserer Community, speziell der PASS (<a href="http://www.sqlpass.de">www.sqlpass.de</a>) gar nicht genug betonen kann. Damit stehen wir unter allen Produktgruppen bei Microsoft wirklich stark heraus.</span></p>
<p><span style="font-family: verdana,geneva;">&#160;</span></p>
<ul>
<li><span style="font-family: verdana,geneva;">Mehr zum Microsoft Certified Master Programm</span><br /><span style="font-family: verdana,geneva;"> <a href="http://www.microsoft.com/de-de/business/learning/master.aspx">www.microsoft.com/de-de/business/learning/master.aspx</a></span></li>
<li><span style="font-family: verdana,geneva;">Die SQL Server Master-Classes von Sarpedon Quality Lab</span><br /><span style="font-family: verdana,geneva;"> <a href="http://www.sarpedonqualitylab.com/SQL_Master-Classes.htm">www.sarpedonqualitylab.com/SQL_Master-Classes.htm</a></span></li>
<li><span style="font-family: verdana,geneva;">Die deutsche SQL Server Community</span><br /><span style="font-family: verdana,geneva;"> <a href="http://www.sqlpass.de">www.sqlpass.de</a></span></li>
</ul>
<p><span style="font-family: verdana,geneva;">&#160;</span></p>
<p><span style="font-family: verdana,geneva;">Sch&#246;ne Gr&#252;&#223;e</span></p>
<p><span style="font-family: verdana,geneva;">Andreas</span></p>
<p>&#160;</p>]]></content:encoded>
								<comments>http://www.insidesql.org/blogs/andreaswolter/2013/05/27/umfrage-zertifizierung-microsoft-certified-master#comments</comments>
			<wfw:commentRss>http://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3492</wfw:commentRss>
		</item>
				<item>
			<title>Empfehlungen f&#252;r die Vorbereitungen zum MCM SQL Server</title>
			<link>http://www.insidesql.org/blogs/uricken/2013/05/26/empfehlungen-fuer-die-vorbereitungen-zum</link>
			<pubDate>Sun, 26 May 2013 12:13:00 +0000</pubDate>			<dc:creator>Uwe Ricken</dc:creator>
			<category domain="alt">Tipps und Tricks</category>
<category domain="main">Zertifizierung</category>
<category domain="alt">Sonstiges</category>			<guid isPermaLink="false">3491@http://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;&lt;a href=&quot;http://db-berater.blogspot.de/2013/05/empfehlungen-fur-die-vorbereitungen-zum.html#more&quot;&gt;http://db-berater.blogspot.de/2013/05/empfehlungen-fur-die-vorbereitungen-zum.html#more&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;Mit diesem Artikel m&amp;#246;chte ich gerne ein paar Informationen f&amp;#252;r diejenigen Leute bereitstellen, die vielleicht planen, den Zertifizierungsmarathon auf sich zu nehmen. Viele MCM haben schon ihre pers&amp;#246;nlichen Tipps in ihren Blogs verewigt &amp;#8211; einige davon habe ich mir bei meinen Vorbereitungen sehr zu Herzen genommen, andere wiederum widersprechen meiner pers&amp;#246;nlichen Art, Stoff zu lernen und den gelernten Stoff umzusetzen. Eines jedoch gleich vorweg &amp;#8211; MCM wird man nicht nur durch Lernen; es bedarf ebenfalls einer breit aufgestellten Erfahrung in den Bereichen &amp;#8220;Administration&amp;#8221; und &amp;#8220;Entwicklung&amp;#8221; von und mit Microsoft SQL Server. Ohne diese Erfahrungen &amp;#8211; das ist meine &amp;#220;berzeugung &amp;#8211; wird&amp;#160; man bei den Tests mit gro&amp;#223;er Wahrscheinlichkeit scheitern. Ein weiterer wichtiger Punkt; Leidenschaft f&amp;#252;r die Arbeit mit Microsoft SQL Server. Ohne die notwendige Leidenschaft f&amp;#252;r seine Arbeit fehlt die erforderliche Motivation, sich intensiv mit einer Sache auseinander zu setzen. Wenn beides stimmt, dann sollte einer Karriere als MCM nichts mehr im Wege stehen&amp;#8230;&lt;/p&gt;&lt;/p&gt;&lt;a href=&quot;http://www.insidesql.org/blogs/uricken/2013/05/26/empfehlungen-fuer-die-vorbereitungen-zum#more3491&quot;&gt;Full story &amp;raquo;&lt;/a&gt;</description>
			<content:encoded><![CDATA[<p><a href="http://db-berater.blogspot.de/2013/05/empfehlungen-fur-die-vorbereitungen-zum.html#more">http://db-berater.blogspot.de/2013/05/empfehlungen-fur-die-vorbereitungen-zum.html#more</a></p><p><p>Mit diesem Artikel m&#246;chte ich gerne ein paar Informationen f&#252;r diejenigen Leute bereitstellen, die vielleicht planen, den Zertifizierungsmarathon auf sich zu nehmen. Viele MCM haben schon ihre pers&#246;nlichen Tipps in ihren Blogs verewigt &#8211; einige davon habe ich mir bei meinen Vorbereitungen sehr zu Herzen genommen, andere wiederum widersprechen meiner pers&#246;nlichen Art, Stoff zu lernen und den gelernten Stoff umzusetzen. Eines jedoch gleich vorweg &#8211; MCM wird man nicht nur durch Lernen; es bedarf ebenfalls einer breit aufgestellten Erfahrung in den Bereichen &#8220;Administration&#8221; und &#8220;Entwicklung&#8221; von und mit Microsoft SQL Server. Ohne diese Erfahrungen &#8211; das ist meine &#220;berzeugung &#8211; wird&#160; man bei den Tests mit gro&#223;er Wahrscheinlichkeit scheitern. Ein weiterer wichtiger Punkt; Leidenschaft f&#252;r die Arbeit mit Microsoft SQL Server. Ohne die notwendige Leidenschaft f&#252;r seine Arbeit fehlt die erforderliche Motivation, sich intensiv mit einer Sache auseinander zu setzen. Wenn beides stimmt, dann sollte einer Karriere als MCM nichts mehr im Wege stehen&#8230;</p></p><a href="http://www.insidesql.org/blogs/uricken/2013/05/26/empfehlungen-fuer-die-vorbereitungen-zum#more3491">Full story &raquo;</a>]]></content:encoded>
								<comments>http://www.insidesql.org/blogs/uricken/2013/05/26/empfehlungen-fuer-die-vorbereitungen-zum#comments</comments>
			<wfw:commentRss>http://www.insidesql.org/blogs/uricken/?tempskin=_rss2&#38;disp=comments&#38;p=3491</wfw:commentRss>
		</item>
				<item>
			<title>MCM SQL Server 2008</title>
			<link>http://www.insidesql.org/blogs/uricken/2013/05/24/mcm-sql-server-2008</link>
			<pubDate>Fri, 24 May 2013 21:55:00 +0000</pubDate>			<dc:creator>Uwe Ricken</dc:creator>
			<category domain="main">Zertifizierung</category>
<category domain="alt">Sonstiges</category>			<guid isPermaLink="false">3490@http://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;&lt;a href=&quot;http://db-berater.blogspot.de/2013/05/mcm-sql-server-2008.html&quot;&gt;http://db-berater.blogspot.de/2013/05/mcm-sql-server-2008.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;Dieser Artikel hat mal nicht mit Technik zu tun sondern soll ein wenig meine Freude zum Ausdruck bringen, die ich versp&amp;#252;rt habe, als mich eine Email von Bob Taylor (Programm Director MCM Programm) erreichte: Ich habe den LAB-Test f&amp;#252;r die Zertifizierung zum MCM SQL Server 2008 bestanden. Der &amp;#8220;Microsoft Certified Master&amp;#8221; ist die h&amp;#246;chste technische Auszeichnung, die Microsoft vergibt. Mit diesem Artikel m&amp;#246;chte ich den langen&amp;#160;&amp;#8211; und endlich erfolgreichen&amp;#160;&amp;#8211; Weg noch einmal reflektieren; in der Hoffnung, dass meine Erfahrungen Anderen dabei helfen k&amp;#246;nnen, ebenfalls erfolgreich die MCM-Zertifizierung abzuschlie&amp;#223;en. Eines gleich vorweg: Wer erwartet, dass ich Hinweise auf Fragen, L&amp;#246;sungen und/oder L&amp;#246;sungswege gebe, den muss ich entt&amp;#228;uschen. Mit der Anmeldung zur MCM-Zertifizierung habe ich gleichzeitig ein NDA (Non Disclosure Agreement) akzeptiert, dass jegliche Weitergabe von Informationen &amp;#252;ber Fragen oder L&amp;#246;sungen untersagt.&lt;/p&gt;&lt;/p&gt;&lt;a href=&quot;http://www.insidesql.org/blogs/uricken/2013/05/24/mcm-sql-server-2008#more3490&quot;&gt;Full story &amp;raquo;&lt;/a&gt;</description>
			<content:encoded><![CDATA[<p><a href="http://db-berater.blogspot.de/2013/05/mcm-sql-server-2008.html">http://db-berater.blogspot.de/2013/05/mcm-sql-server-2008.html</a></p><p><p>Dieser Artikel hat mal nicht mit Technik zu tun sondern soll ein wenig meine Freude zum Ausdruck bringen, die ich versp&#252;rt habe, als mich eine Email von Bob Taylor (Programm Director MCM Programm) erreichte: Ich habe den LAB-Test f&#252;r die Zertifizierung zum MCM SQL Server 2008 bestanden. Der &#8220;Microsoft Certified Master&#8221; ist die h&#246;chste technische Auszeichnung, die Microsoft vergibt. Mit diesem Artikel m&#246;chte ich den langen&#160;&#8211; und endlich erfolgreichen&#160;&#8211; Weg noch einmal reflektieren; in der Hoffnung, dass meine Erfahrungen Anderen dabei helfen k&#246;nnen, ebenfalls erfolgreich die MCM-Zertifizierung abzuschlie&#223;en. Eines gleich vorweg: Wer erwartet, dass ich Hinweise auf Fragen, L&#246;sungen und/oder L&#246;sungswege gebe, den muss ich entt&#228;uschen. Mit der Anmeldung zur MCM-Zertifizierung habe ich gleichzeitig ein NDA (Non Disclosure Agreement) akzeptiert, dass jegliche Weitergabe von Informationen &#252;ber Fragen oder L&#246;sungen untersagt.</p></p><a href="http://www.insidesql.org/blogs/uricken/2013/05/24/mcm-sql-server-2008#more3490">Full story &raquo;</a>]]></content:encoded>
								<comments>http://www.insidesql.org/blogs/uricken/2013/05/24/mcm-sql-server-2008#comments</comments>
			<wfw:commentRss>http://www.insidesql.org/blogs/uricken/?tempskin=_rss2&#38;disp=comments&#38;p=3490</wfw:commentRss>
		</item>
				<item>
			<title>Spalten&#252;berschriften beim Bildlauf sichtbar halten</title>
			<link>http://www.insidesql.org/blogs/frankkalis/2013/05/23/spaltenueberschriften-beim-bildlauf-sichtbar-halten</link>
			<pubDate>Thu, 23 May 2013 09:23:00 +0000</pubDate>			<dc:creator>Frank Kalis</dc:creator>
			<category domain="main">SQL Server</category>			<guid isPermaLink="false">3485@http://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;Eventuell reite ich jetzt auf etwas rum, was vielleicht nur f&amp;#252;r mich ein Issue ist. Vielleicht ist es aber auch bereits schon in einer der neueren Reporting Services nach SQL Server 2008 R2 gefixt. Egal, dieser Eintrag ist eh mehr f&amp;#252;r mich als Referenz gedacht als alles andere. Wenn er jedoch dar&amp;#252;ber hinaus anderen Zeit und Nerven ersparen kann, umso besser...&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;a href=&quot;http://www.insidesql.org/blogs/frankkalis/2013/05/23/spaltenueberschriften-beim-bildlauf-sichtbar-halten#more3485&quot;&gt;Full story &amp;raquo;&lt;/a&gt;</description>
			<content:encoded><![CDATA[<p>Eventuell reite ich jetzt auf etwas rum, was vielleicht nur f&#252;r mich ein Issue ist. Vielleicht ist es aber auch bereits schon in einer der neueren Reporting Services nach SQL Server 2008 R2 gefixt. Egal, dieser Eintrag ist eh mehr f&#252;r mich als Referenz gedacht als alles andere. Wenn er jedoch dar&#252;ber hinaus anderen Zeit und Nerven ersparen kann, umso besser...</p>
<p></p><a href="http://www.insidesql.org/blogs/frankkalis/2013/05/23/spaltenueberschriften-beim-bildlauf-sichtbar-halten#more3485">Full story &raquo;</a>]]></content:encoded>
								<comments>http://www.insidesql.org/blogs/frankkalis/2013/05/23/spaltenueberschriften-beim-bildlauf-sichtbar-halten#comments</comments>
			<wfw:commentRss>http://www.insidesql.org/blogs/frankkalis/?tempskin=_rss2&#38;disp=comments&#38;p=3485</wfw:commentRss>
		</item>
				<item>
			<title>Neues Updates f&#252;r SQL Server 2008 SP3</title>
			<link>http://www.insidesql.org/blogs/falkkrahl/2013/05/21/neues-updates-fuer-sql-server-2</link>
			<pubDate>Tue, 21 May 2013 14:53:00 +0000</pubDate>			<dc:creator>Falk Krahl</dc:creator>
			<category domain="main">SQL Server 2008</category>			<guid isPermaLink="false">3489@http://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;F&amp;#252;r den SQL Server 2008 ist ein neues Update erschienen. Dies ist f&amp;#252;r den SQL Server 2008 mit SP3 gedacht und kann unter folgenden Link gedownloadet werden.&lt;br /&gt;
&lt;a href=&quot;http://support.microsoft.com/kb/2834048&quot; title=&quot;SQL2008 SP3 CU11&quot; target=&#039;_blank&#039;&gt;Kumulatives Update 11 f&amp;#252;r SQL Server 2008 SP3&lt;/a&gt;&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>F&#252;r den SQL Server 2008 ist ein neues Update erschienen. Dies ist f&#252;r den SQL Server 2008 mit SP3 gedacht und kann unter folgenden Link gedownloadet werden.<br />
<a href="http://support.microsoft.com/kb/2834048" title="SQL2008 SP3 CU11" target='_blank'>Kumulatives Update 11 f&#252;r SQL Server 2008 SP3</a></p>]]></content:encoded>
								<comments>http://www.insidesql.org/blogs/falkkrahl/2013/05/21/neues-updates-fuer-sql-server-2#comments</comments>
			<wfw:commentRss>http://www.insidesql.org/blogs/falkkrahl/?tempskin=_rss2&#38;disp=comments&#38;p=3489</wfw:commentRss>
		</item>
				<item>
			<title>Unterschied zwischen Primary Key und Clustered Index</title>
			<link>http://www.insidesql.org/blogs/uricken/2013/05/20/unterschied-zwischen-primary-key-und</link>
			<pubDate>Mon, 20 May 2013 15:45:00 +0000</pubDate>			<dc:creator>Uwe Ricken</dc:creator>
			<category domain="alt">Administration</category>
<category domain="main">Tipps und Tricks</category>
<category domain="alt">Optimierung / Performance</category>
<category domain="alt">Sonstiges</category>			<guid isPermaLink="false">3488@http://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;&lt;a href=&quot;http://db-berater.blogspot.de/2013/05/unterschied-zwischen-primary-key-und.html&quot;&gt;http://db-berater.blogspot.de/2013/05/unterschied-zwischen-primary-key-und.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Letzte Woche wurde ich beauftragt, die Ursachen f&amp;#252;r eine schlechte Performance innerhalb einer Datenbank zu analysieren und gegebenenfalls Hinweise zu geben, wie man die Wartezeiten im Frontend verk&amp;#252;rzen kann. Bei der Pr&amp;#252;fung der Ausf&amp;#252;hrungspl&amp;#228;ne und Indexstrukturen ist aufgefallen, dass fast 10% der Relationen HEAPS sind und in vielen Abfragen mit anderen Relationen &amp;#252;ber JOINS verwendet wurden. Meine erste Empfehlung war demzufolge &amp;#8211; basierend auf den Ausf&amp;#252;hrungspl&amp;#228;nen &amp;#8211; die Implementierung und Verwendung von Clustered Indexes. Da die Anwendung nicht &amp;#8220;in House&amp;#8221; entwickelt worden ist, wurde sich mit der Bitte um Pr&amp;#252;fung und Zusendung von Skripten an den Hersteller gewandt. Das nachfolgende Script soll stellvertretend f&amp;#252;r den L&amp;#246;sungsansatz des Herstellers dienen. Bei der im Beispiel benannten Relation handelt es sich um eine simple Relation f&amp;#252;r die Speicherung historischer Daten ohne Fremdschl&amp;#252;ssel-Referenzen.&amp;#160;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;CREATE CLUSTERED INDEX &lt;span style=&quot;color: #000000;&quot;&gt;ix_relation_id&lt;/span&gt; ON &lt;span style=&quot;color: #000000;&quot;&gt;dbo.tbl_relation(id);&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;DELETE &lt;span style=&quot;color: #000000;&quot;&gt;dbo.relation &lt;/span&gt;WHERE &lt;span style=&quot;color: #000000;&quot;&gt;id &lt;/span&gt;IN &lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;SELECT &lt;span style=&quot;color: #000000;&quot;&gt;id &lt;/span&gt;FROM &lt;span style=&quot;color: #000000;&quot;&gt;dbo.relation &lt;/span&gt;GROUP BY &lt;span style=&quot;color: #000000;&quot;&gt;id &lt;/span&gt;HAVING &lt;span style=&quot;color: #9b00d3;&quot;&gt;COUNT&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(id) &amp;gt; 1);&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;DROP INDEX &lt;span style=&quot;color: #000000;&quot;&gt;ix_relation &lt;/span&gt;ON &lt;span style=&quot;color: #000000;&quot;&gt;dbo.tbl_relation;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;ALTER TABLE &lt;span style=&quot;color: #000000;&quot;&gt;dbo.tbl_relation &lt;/span&gt;ADD CONSTRAINT &lt;span style=&quot;color: #000000;&quot;&gt;p_relation_id &lt;/span&gt;PRIMARY KEY &lt;span style=&quot;color: #000000;&quot;&gt;(id);&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Als ich das Script von meinem Auftraggeber erhalten habe, musste ich erst mal tief Luft holen und mich fragen, welcher &amp;#8220;Experte&amp;#8221; solche Skripte an seine Kunden verschickt. Zun&amp;#228;chst wird ein Clustered Index auf dem Attribut [Id] der Relation [dbo].[tbl_relation] erstellt (Zeile 1). Anschlie&amp;#223;end werden ALLE Datens&amp;#228;tze, die eine redundante [Id] besitzen gel&amp;#246;scht (Zeile 2). Nachdem die Daten gel&amp;#246;scht wurden, wird der Clustered Index wieder entfernt und durch einen PRIMARY KEY ersetzt.&lt;/p&gt;
&lt;p&gt;Der brisanteste Teil in diesem Script ist sicherlich die Zeile 2; sollen doch tats&amp;#228;chlich Daten aus einem Produktionssystem gel&amp;#246;scht werden ohne diese im Vorfeld in einer Staging-Tabelle zu analysieren. Des Weiteren ist aufgefallen, dass dem Programmierer scheinbar der Unterschied zwischen einem Clustered Index und der Einschr&amp;#228;nkung eines PRIMARY KEY nicht bekannt ist. Die Intention des Programmierers wird beim Lesen der obigen Skriptzeilen relativ schnell klar; zun&amp;#228;chst wird ein &amp;#8220;Index&amp;#8221; erzeugt, um schnell die redundanten Datens&amp;#228;tze zu l&amp;#246;schen. Anschlie&amp;#223;end soll mittels PRIMARY KEY erneut ein Clustered Index erzeugt werden, um unsere Anforderungen zu erf&amp;#252;llen.&lt;/p&gt;
&lt;h2&gt;Was ist ein Primary Key&lt;/h2&gt;
&lt;p&gt;Um mitzuteilen, welchen der Schl&amp;#252;sselkandidaten man zur Identifikation eines Datensatzes (Tupel) in einer Relation bevorzugt, wird aus allen Schl&amp;#252;sselkandidaten der &lt;strong&gt;Prim&amp;#228;rschl&amp;#252;ssel&lt;/strong&gt; ausgew&amp;#228;hlt. Der Prim&amp;#228;rschl&amp;#252;ssel wird &amp;#252;blicherweise so ausgew&amp;#228;hlt, dass er m&amp;#246;glichst klein ist, das hei&amp;#223;t m&amp;#246;glichst wenige Attribute umfasst bzw. einen m&amp;#246;glichst simplen Datentyp hat. Ein Prim&amp;#228;rschl&amp;#252;ssel ist &lt;strong&gt;KEIN &lt;/strong&gt;Index ist sondern eine &lt;strong&gt;Einschr&amp;#228;nkung&lt;/strong&gt;(CONSTRAINT). Ein Prim&amp;#228;rschl&amp;#252;ssel besitzt die nachfolgenden Besonderheiten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eine Relation kann nur einen PRIMARY KEY besitzen&lt;/li&gt;
&lt;li&gt;In den Attributen des PRIMARY KEY sind keine NULL-Werte zugelassen&lt;/li&gt;
&lt;li&gt;Die Attribute des PRIMARY KEY d&amp;#252;rfen nicht redundant sein (doppelte Schl&amp;#252;sselwerte!)&lt;/li&gt;
&lt;li&gt;Die Einschr&amp;#228;nkung PRIMARY KEY erzwingt immer die Definition eines EINDEUTIGEN Index und nicht zwingend einen CLUSTERED INDEX!&lt;/li&gt;
&lt;li&gt;Ein PRIMARY KEY ist NICHT zwingend f&amp;#252;r DRI (deklarative referenzielle Integrit&amp;#228;t)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die nachfolgenden Beispiele soll die Besonderheiten eines PRIMARY KEY verdeutlichen:&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;CREATE TABLE&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;dbo.master_table&lt;br /&gt;(&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; Id&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;int&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NULL &lt;span style=&quot;color: #0000ff;&quot;&gt;PRIMARY KEY&lt;/span&gt;,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; col1&amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;char&lt;/span&gt;(20)&amp;#160; NULL&lt;br /&gt;);&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;GO&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Der Aufruf schl&amp;#228;gt fehl, da das Attribut [Id] NULL-Werte zul&amp;#228;sst w&amp;#228;hrend der n&amp;#228;chste Aufruf im n&amp;#228;chsten Beispiel funktioniert, da die Einschr&amp;#228;nkung NOT NULL f&amp;#252;r das Attribut [Id] verwendet wird.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000; font-family: Courier New;&quot;&gt;&lt;strong&gt;Meldung 8111, Ebene 16, Status 1, Zeile 2 Eine PRIMARY KEY-Einschr&amp;#228;nkung kann f&amp;#252;r eine Spalte in der master_table-Tabelle, die NULL zul&amp;#228;sst, nicht definiert werden.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;CREATE TABLE&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;dbo.master_table &lt;br /&gt;(&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; Id&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;int&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL &lt;span style=&quot;color: #0000ff;&quot;&gt;PRIMARY KEY&lt;/span&gt;,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; col1&amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;char&lt;/span&gt;(20)&amp;#160; NULL &lt;br /&gt;); &lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;GO&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Sofern f&amp;#252;r die Relation nicht explizit ein Clustered Index definiert wird, erzeugt SQL Server automatisch f&amp;#252;r den PRIMARY KEY einen clustered Index. Beweis liefert die Untersuchung der Indexe und Einschr&amp;#228;nkungen f&amp;#252;r die zuvor erstellte Relation&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;SELECT &lt;span style=&quot;color: #9b00d3;&quot;&gt;OBJECT_NAME&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(parent_object_id)&lt;/span&gt;&amp;#160; AS &lt;span style=&quot;color: #000000;&quot;&gt;table_name,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; k.name&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS&lt;span style=&quot;color: #000000;&quot;&gt; constraint_name,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; k.type&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS&lt;span style=&quot;color: #000000;&quot;&gt; constraint_type,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; k.type_desc&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS&lt;span style=&quot;color: #000000;&quot;&gt; constraint_type_desc,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; unique_index_id,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; is_system_named,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; i.name&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS&lt;span style=&quot;color: #000000;&quot;&gt; index_name,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; i.type_desc&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;AS&lt;span style=&quot;color: #000000;&quot;&gt; index_type&lt;br /&gt; &lt;/span&gt;FROM&amp;#160;&amp;#160; &lt;span style=&quot;color: #008040;&quot;&gt;sys.key_constraints&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;k &lt;/span&gt;LEFT JOIN &lt;span style=&quot;color: #008040;&quot;&gt;sys.indexes&lt;/span&gt; i&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ON &lt;span style=&quot;color: #000000;&quot;&gt;(&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; k.parent_object_id =&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;i.object_id AND&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; k.unique_index_id = i.index_id&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;br /&gt; &lt;/span&gt;WHERE&amp;#160; &lt;span style=&quot;color: #000000;&quot;&gt;parent_object_id =&lt;/span&gt; &lt;span style=&quot;color: #9b00d3;&quot;&gt;OBJECT_ID&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;dbo.master_table&#039;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;U&#039;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;);&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 01.png?mtime=1369122093&quot;&gt;&lt;img src=&quot;http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 01.png?mtime=1369122093&quot; alt=&quot;&quot; width=&quot;906&quot; height=&quot;69&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Das DMO sys.key_constraints enth&amp;#228;lt jeweils eine Zeile f&amp;#252;r jedes Objekt, dass entweder eine PRIMARY KEY oder eine UNIQUE Einschr&amp;#228;nkung besitzt. Die obige Abbildung zeigt, dass der PRIMARY KEY eindeutig ist und der Name der Einschr&amp;#228;nkung automatisch durch SQL Server erstellt wurde. Handelt es sich um eine eindeutige Einschr&amp;#228;nkung (UNIQUE), kann der entsprechende UNIQUE Index &amp;#252;ber die [index_id] der zugeh&amp;#246;rigen Relation ermittelt werden.&lt;/p&gt;
&lt;p&gt;Da eine Einschr&amp;#228;nkung auch durch individuelle Namensgebung erstellt werden kann, f&amp;#252;hrt das nachfolgende Beispiel ebenfalls zur Erstellung des PRIMARY KEY mit dem Unterschied, dass der Name durch den Ersteller vordefiniert wird.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;CREATE TABLE&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;dbo.master_table&lt;br /&gt; (&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; Id&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;int&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NOT NULL,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; col1&amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;char&lt;/span&gt;(20)&amp;#160; NULL, &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;CONSTRAINT&lt;/span&gt; pk_master_table_id &lt;span style=&quot;color: #0000ff;&quot;&gt;PRIMARY KEY&lt;/span&gt; (Id)&lt;br /&gt; );&lt;br /&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;GO&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 02.png?mtime=1369122101&quot;&gt;&lt;img src=&quot;http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 02.png?mtime=1369122101&quot; alt=&quot;&quot; width=&quot;870&quot; height=&quot;66&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Da nun der Name des PRIMARY KEY selbst festgelegt worden ist, ist das Attribut [is_system_named] nun 0. Weitere Einstellungen haben sich nicht ge&amp;#228;ndert. Das ein PRIMARY KEY nicht zwingend ein Clustered Index ist, zeigt das n&amp;#228;chste Beispiel sehr deutlich:&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;CREATE TABLE &lt;span style=&quot;color: #000000;&quot;&gt;dbo.master_table&lt;br /&gt; (&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; Id&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #000000;&quot;&gt;NOT NULL,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; col1&amp;#160; &lt;/span&gt;char&lt;span style=&quot;color: #000000;&quot;&gt;(20)&amp;#160; NULL,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CONSTRAINT &lt;span style=&quot;color: #000000;&quot;&gt;pk_master_table_id&lt;/span&gt; PRIMARY KEY NONCLUSTERED &lt;span style=&quot;color: #000000;&quot;&gt;(id)&lt;br /&gt; );&lt;br /&gt; &lt;/span&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;CREATE CLUSTERED INDEX &lt;span style=&quot;color: #000000;&quot;&gt;ix_master_table_col1&lt;/span&gt; ON &lt;span style=&quot;color: #000000;&quot;&gt;dbo.master_table (col1);&lt;br /&gt; &lt;/span&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Unabh&amp;#228;ngig von der Existenz eines Clustered Index kann der PRIMARY KEY definiert werden. Da ein PRIMARY KEY nur dann als Clustered Index angelegt wird, wenn noch kein Clustered Index existiert, musste in dem obigen Beispiel der PRIMARY KEY explizit mit der Option NONCLUSTERED definiert werden um eine automatische Erstellung des Clustered Index zu verhindern. Ein Blick auf die Einschr&amp;#228;nkungen und die vorhandenen Indexe zeigt das Ergebnis.&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 03.png?mtime=1369122107&quot;&gt;&lt;img src=&quot;http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 03.png?mtime=1369122107&quot; alt=&quot;&quot; width=&quot;894&quot; height=&quot;137&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;Wozu wird ein Primary Key verwendet?&lt;/h2&gt;
&lt;p&gt;Der Sinn und Zweck eines PRIMARY KEY ergibt sich aus den Eigenschaften der Einschr&amp;#228;nkung selbst. Da ein PRIMARY KEY keine NULL-Werte enthalten darf und eindeutig sein muss, eignet er sich f&amp;#252;r die Durchsetzung von DRI (Deklarative Referenzielle Integrit&amp;#228;t).&amp;#160; Unter Referentieller Integrit&amp;#228;t versteht man Bedingungen, die zur Sicherung der Datenintegrit&amp;#228;t bei Nutzung relationaler Datenbanken beitragen k&amp;#246;nnen. Nach der RI-Regel d&amp;#252;rfen Datens&amp;#228;tze (&amp;#252;ber ihre Fremdschl&amp;#252;ssel) nur auf existierende Datens&amp;#228;tze verweisen.&lt;/p&gt;
&lt;p&gt;Danach besteht die Referenzielle Integrit&amp;#228;t grunds&amp;#228;tzlich aus zwei Teilen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ein neuer Datensatz mit einem Fremdschl&amp;#252;ssel kann nur dann in einer Tabelle eingef&amp;#252;gt werden, wenn in der referenzierten Tabelle ein Datensatz mit entsprechendem Wert im Prim&amp;#228;rschl&amp;#252;ssel oder einem eindeutigen Alternativschl&amp;#252;ssel existiert.&lt;/li&gt;
&lt;li&gt;Eine Datensatzl&amp;#246;schung oder &amp;#196;nderung des Schl&amp;#252;ssels in einem Prim&amp;#228;r-Datensatz ist nur m&amp;#246;glich, wenn zu diesem Datensatz keine abh&amp;#228;ngigen Datens&amp;#228;tze in Beziehung stehen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;SQL Server ben&amp;#246;tigt f&amp;#252;r Referenzielle Integrit&amp;#228;t nicht zwingend einen PRIMARY KEY; vielmehr sind nur die Eigenschaften eines PRIMARY KEY f&amp;#252;r SQL Server von Relevanz f&amp;#252;r die Durchsetzung von Referenzieller Integrit&amp;#228;t. Die beiden nachfolgenden Skriptbeispiele sollen diesen Zusammenhang verdeutlichen. F&amp;#252;r die Definition eines Fremdschl&amp;#252;ssels ist zwingend erforderlich, dass das Prim&amp;#228;rattribut der Masterrelation weder NULL-Werte besitzt noch mehrfach vorkommen darf. Das nachfolgende Script wird fehlschlagen, da SQL Server nicht in der Lage ist, eindeutige Schl&amp;#252;sselwerte in [master_table] sicher zu stellen:&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;CREATE TABLE&lt;span style=&quot;color: #000000;&quot;&gt; dbo.master_table&lt;br /&gt; (&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; Id&lt;/span&gt;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #000000;&quot;&gt;NOT NULL,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; col1 &lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(20)&amp;#160; NULL&lt;br /&gt;);&lt;br /&gt; &lt;/span&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;CREATE TABLE &lt;span style=&quot;color: #000000;&quot;&gt;dbo.detail_table&lt;br /&gt; (&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; Master_id&lt;/span&gt;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #000000;&quot;&gt;NOT NULL,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; detail_id&amp;#160;&amp;#160; &lt;/span&gt;int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #000000;&quot;&gt;NOT NULL,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; col1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;char&lt;span style=&quot;color: #000000;&quot;&gt;(20)&amp;#160; NOT NULL,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CONSTRAINT &lt;span style=&quot;color: #000000;&quot;&gt;fk_master_table_id&lt;/span&gt; FOREIGN KEY &lt;span style=&quot;color: #000000;&quot;&gt;(master_id)&lt;br /&gt; &lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; REFERENCES &lt;span style=&quot;color: #000000;&quot;&gt;dbo.master_table(Id)&lt;br /&gt; &lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; ON DELETE CASCADE&lt;br /&gt; &lt;span style=&quot;color: #000000;&quot;&gt;);&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Wird das obige Script ausgef&amp;#252;hrt, wird der nachfolgende Fehler ausgel&amp;#246;st. Die Fehlerbeschreibung ist selbsterkl&amp;#228;rend:&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000; font-family: Courier New;&quot;&gt;Meldung 1776, Ebene 16, Status 0, Zeile 2 In der dbo.master_table-Tabelle, auf die verwiesen wird, befinden sich keine prim&amp;#228;ren &lt;strong&gt;oder&lt;/strong&gt; Kandidatenschl&amp;#252;ssel, die mit der verweisenden Spaltenliste im fk_master_table_id-Fremdschl&amp;#252;ssel &amp;#252;bereinstimmen&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;F&amp;#252;r eine Fremdschl&amp;#252;sselbeziehung wird ENTWEDER ein PRIMARY KEY oder ein UNIQUE NOT NULL Index ben&amp;#246;tigt. Statt also eines PRIMARY KEY kann auch eine UNIQUE-Einschr&amp;#228;nkung verwendet werden. &amp;#196;ndert man das Script zur Erstellung der Relationen wie folgt um, kann die Einschr&amp;#228;nkung problemlos erstellt werden:&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;CREATE TABLE&lt;span style=&quot;color: #000000;&quot;&gt; dbo.master_table&lt;br /&gt; (&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; Id&lt;/span&gt;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #000000;&quot;&gt;NOT NULL,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; col1 &lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(20)&amp;#160; NULL,&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;CONSTRAINT&lt;/span&gt; ux_master_table_id &lt;span style=&quot;color: #0000ff;&quot;&gt;UNIQUE&lt;/span&gt; (Id)&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;);&lt;br /&gt; &lt;/span&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;CREATE TABLE &lt;span style=&quot;color: #000000;&quot;&gt;dbo.detail_table&lt;br /&gt; (&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; Master_id&lt;/span&gt;&amp;#160;&amp;#160; int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #000000;&quot;&gt;NOT NULL,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; detail_id&amp;#160;&amp;#160; &lt;/span&gt;int&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #000000;&quot;&gt;NOT NULL,&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160; col1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;char&lt;span style=&quot;color: #000000;&quot;&gt;(20)&amp;#160; NOT NULL,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff; font-family: Courier New;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;CONSTRAINT &lt;span style=&quot;color: #000000;&quot;&gt;fk_master_table_id&lt;/span&gt; FOREIGN KEY &lt;span style=&quot;color: #000000;&quot;&gt;(master_id)&lt;br /&gt; &lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; REFERENCES &lt;span style=&quot;color: #000000;&quot;&gt;dbo.master_table(Id)&lt;br /&gt; &lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; ON DELETE CASCADE&lt;br /&gt; &lt;span style=&quot;color: #000000;&quot;&gt;);&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Das Script l&amp;#228;uft fehlerfrei durch und die Fremdschl&amp;#252;ssel-Einschr&amp;#228;nkung wird erstellt, da f&amp;#252;r das Fremdschl&amp;#252;ssel-Attribut [Id] die Einschr&amp;#228;nkungen &amp;#8220;NOT NULL&amp;#8221; und &amp;#8220;UNIQUE&amp;#8221; vorhanden sind. Es bedarf keiner weiteren Einschr&amp;#228;nkungen mehr. Schaut man sich anschlie&amp;#223;end die in der Relation [dbo].[master_table] befindlichen Indexe an, stellt man fest, dass die Relation selbst immer noch ein HEAP ist und keinen clustered Index besitzt.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: courier new,courier;&quot;&gt;SELECT &lt;span style=&quot;color: #000000;&quot;&gt;*&lt;/span&gt; FROM sys.indexes WHERE &lt;span style=&quot;color: #000000;&quot;&gt;object_id =&lt;/span&gt; &lt;span style=&quot;color: #ff00ff;&quot;&gt;OBJECT_ID&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;dbo.master_table&#039;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;U&#039;&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 04.png?mtime=1369122115&quot;&gt;&lt;img src=&quot;http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 04.png?mtime=1369122115&quot; alt=&quot;&quot; width=&quot;845&quot; height=&quot;60&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Die Definition eines PRIMARY KEY f&amp;#252;r eine Relation hat NICHTS mit der Definition und der Funktionalit&amp;#228;t eines Clustered Index zu tun. Beide Verfahren sind unabh&amp;#228;ngig voneinander zu betrachten und verfolgen ganz verschiedene Ans&amp;#228;tze. W&amp;#228;hrend ein PRIMARY KEY eine Eigenschaft einer Relation ist, ist der Clustered Index die Relation selbst. W&amp;#228;hrend ein Clustered Index ausschlie&amp;#223;lich f&amp;#252;r die physikalische Ordnung der Datens&amp;#228;tze verantwortlich ist, dient der PRIMARY KEY der Durchsetzung von klar vordefinierten Vorgaben f&amp;#252;r das Schl&amp;#252;sselattribut eines Datensatzes (Eindeutigkeit und NOT NULLABLE).&lt;/p&gt;
&lt;p&gt;Herzlichen Dank f&amp;#252;r&amp;#8217;s Lesen&lt;/p&gt;
&lt;table style=&quot;width: 600px;&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;159&quot;&gt;PRIMARY KEY&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;441&quot;&gt;&lt;a title=&quot;http://msdn.microsoft.com/de-de/library/ms191236(v=sql.105).aspx&quot; href=&quot;http://msdn.microsoft.com/de-de/library/ms191236.aspx&quot; target=&quot;_blank&quot;&gt;http://msdn.microsoft.com/de-de/library/ms191236.aspx&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;159&quot;&gt;CLUSTERED INDEX&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;441&quot;&gt;&lt;a title=&quot;http://msdn.microsoft.com/de-de/library/ms177443.aspx&quot; href=&quot;http://msdn.microsoft.com/de-de/library/ms177443.aspx&quot; target=&quot;_blank&quot;&gt;http://msdn.microsoft.com/de-de/library/ms177443.aspx&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;159&quot;&gt;Referentielle Integrit&amp;#228;t&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;441&quot;&gt;&lt;a title=&quot;http://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t&quot; href=&quot;http://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t&quot; target=&quot;_blank&quot;&gt;http://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;159&quot;&gt;sys.key_constraints&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;441&quot;&gt;&lt;a title=&quot;http://msdn.microsoft.com/de-de/library/ms174321.aspx&quot; href=&quot;http://msdn.microsoft.com/de-de/library/ms174321.aspx&quot; target=&quot;_blank&quot;&gt;http://msdn.microsoft.com/de-de/library/ms174321.aspx&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;159&quot;&gt;sys.indexes&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;441&quot;&gt;&lt;a title=&quot;http://msdn.microsoft.com/de-de/library/ms173760(v=sql.105).aspx&quot; href=&quot;http://msdn.microsoft.com/de-de/library/ms173760(v=sql.105).aspx&quot; target=&quot;_blank&quot;&gt;http://msdn.microsoft.com/de-de/library/ms173760.aspx&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
			<content:encoded><![CDATA[<p><a href="http://db-berater.blogspot.de/2013/05/unterschied-zwischen-primary-key-und.html">http://db-berater.blogspot.de/2013/05/unterschied-zwischen-primary-key-und.html</a></p><p>Letzte Woche wurde ich beauftragt, die Ursachen f&#252;r eine schlechte Performance innerhalb einer Datenbank zu analysieren und gegebenenfalls Hinweise zu geben, wie man die Wartezeiten im Frontend verk&#252;rzen kann. Bei der Pr&#252;fung der Ausf&#252;hrungspl&#228;ne und Indexstrukturen ist aufgefallen, dass fast 10% der Relationen HEAPS sind und in vielen Abfragen mit anderen Relationen &#252;ber JOINS verwendet wurden. Meine erste Empfehlung war demzufolge &#8211; basierend auf den Ausf&#252;hrungspl&#228;nen &#8211; die Implementierung und Verwendung von Clustered Indexes. Da die Anwendung nicht &#8220;in House&#8221; entwickelt worden ist, wurde sich mit der Bitte um Pr&#252;fung und Zusendung von Skripten an den Hersteller gewandt. Das nachfolgende Script soll stellvertretend f&#252;r den L&#246;sungsansatz des Herstellers dienen. Bei der im Beispiel benannten Relation handelt es sich um eine simple Relation f&#252;r die Speicherung historischer Daten ohne Fremdschl&#252;ssel-Referenzen.&#160;</p>
<ol>
<li><span style="color: #0000ff; font-family: Courier New;"><strong>CREATE CLUSTERED INDEX <span style="color: #000000;">ix_relation_id</span> ON <span style="color: #000000;">dbo.tbl_relation(id);</span></strong></span></li>
<li><span style="color: #0000ff; font-family: Courier New;"><strong>DELETE <span style="color: #000000;">dbo.relation </span>WHERE <span style="color: #000000;">id </span>IN <span style="color: #000000;">(</span>SELECT <span style="color: #000000;">id </span>FROM <span style="color: #000000;">dbo.relation </span>GROUP BY <span style="color: #000000;">id </span>HAVING <span style="color: #9b00d3;">COUNT</span><span style="color: #000000;">(id) &gt; 1);</span></strong></span></li>
<li><span style="color: #0000ff; font-family: Courier New;"><strong>DROP INDEX <span style="color: #000000;">ix_relation </span>ON <span style="color: #000000;">dbo.tbl_relation;</span></strong></span></li>
<li><span style="color: #0000ff; font-family: Courier New;"><strong>ALTER TABLE <span style="color: #000000;">dbo.tbl_relation </span>ADD CONSTRAINT <span style="color: #000000;">p_relation_id </span>PRIMARY KEY <span style="color: #000000;">(id);</span></strong></span></li>
</ol>
<p>Als ich das Script von meinem Auftraggeber erhalten habe, musste ich erst mal tief Luft holen und mich fragen, welcher &#8220;Experte&#8221; solche Skripte an seine Kunden verschickt. Zun&#228;chst wird ein Clustered Index auf dem Attribut [Id] der Relation [dbo].[tbl_relation] erstellt (Zeile 1). Anschlie&#223;end werden ALLE Datens&#228;tze, die eine redundante [Id] besitzen gel&#246;scht (Zeile 2). Nachdem die Daten gel&#246;scht wurden, wird der Clustered Index wieder entfernt und durch einen PRIMARY KEY ersetzt.</p>
<p>Der brisanteste Teil in diesem Script ist sicherlich die Zeile 2; sollen doch tats&#228;chlich Daten aus einem Produktionssystem gel&#246;scht werden ohne diese im Vorfeld in einer Staging-Tabelle zu analysieren. Des Weiteren ist aufgefallen, dass dem Programmierer scheinbar der Unterschied zwischen einem Clustered Index und der Einschr&#228;nkung eines PRIMARY KEY nicht bekannt ist. Die Intention des Programmierers wird beim Lesen der obigen Skriptzeilen relativ schnell klar; zun&#228;chst wird ein &#8220;Index&#8221; erzeugt, um schnell die redundanten Datens&#228;tze zu l&#246;schen. Anschlie&#223;end soll mittels PRIMARY KEY erneut ein Clustered Index erzeugt werden, um unsere Anforderungen zu erf&#252;llen.</p>
<h2>Was ist ein Primary Key</h2>
<p>Um mitzuteilen, welchen der Schl&#252;sselkandidaten man zur Identifikation eines Datensatzes (Tupel) in einer Relation bevorzugt, wird aus allen Schl&#252;sselkandidaten der <strong>Prim&#228;rschl&#252;ssel</strong> ausgew&#228;hlt. Der Prim&#228;rschl&#252;ssel wird &#252;blicherweise so ausgew&#228;hlt, dass er m&#246;glichst klein ist, das hei&#223;t m&#246;glichst wenige Attribute umfasst bzw. einen m&#246;glichst simplen Datentyp hat. Ein Prim&#228;rschl&#252;ssel ist <strong>KEIN </strong>Index ist sondern eine <strong>Einschr&#228;nkung</strong>(CONSTRAINT). Ein Prim&#228;rschl&#252;ssel besitzt die nachfolgenden Besonderheiten:</p>
<ul>
<li>Eine Relation kann nur einen PRIMARY KEY besitzen</li>
<li>In den Attributen des PRIMARY KEY sind keine NULL-Werte zugelassen</li>
<li>Die Attribute des PRIMARY KEY d&#252;rfen nicht redundant sein (doppelte Schl&#252;sselwerte!)</li>
<li>Die Einschr&#228;nkung PRIMARY KEY erzwingt immer die Definition eines EINDEUTIGEN Index und nicht zwingend einen CLUSTERED INDEX!</li>
<li>Ein PRIMARY KEY ist NICHT zwingend f&#252;r DRI (deklarative referenzielle Integrit&#228;t)</li>
</ul>
<p>Die nachfolgenden Beispiele soll die Besonderheiten eines PRIMARY KEY verdeutlichen:</p>
<p><span style="font-family: Courier New;"><strong><span style="color: #000000;"><span style="color: #0000ff;">CREATE TABLE</span> </span><span style="color: #000000;">dbo.master_table<br />(<br /> &#160;&#160;&#160; Id</span>&#160;&#160;&#160; <span style="color: #0000ff;">int</span>&#160;&#160;&#160;&#160;&#160;&#160; NULL <span style="color: #0000ff;">PRIMARY KEY</span>,<br /> &#160;&#160;&#160; col1&#160; <span style="color: #0000ff;">char</span>(20)&#160; NULL<br />);<br /><span style="color: #0000ff;">GO</span></strong></span></p>
<p>Der Aufruf schl&#228;gt fehl, da das Attribut [Id] NULL-Werte zul&#228;sst w&#228;hrend der n&#228;chste Aufruf im n&#228;chsten Beispiel funktioniert, da die Einschr&#228;nkung NOT NULL f&#252;r das Attribut [Id] verwendet wird.</p>
<p><span style="color: #ff0000; font-family: Courier New;"><strong>Meldung 8111, Ebene 16, Status 1, Zeile 2 Eine PRIMARY KEY-Einschr&#228;nkung kann f&#252;r eine Spalte in der master_table-Tabelle, die NULL zul&#228;sst, nicht definiert werden.</strong></span></p>
<p><span style="font-family: Courier New;"><strong><span style="color: #000000;"><span style="color: #0000ff;">CREATE TABLE</span> </span><span style="color: #000000;">dbo.master_table <br />(<br /> &#160;&#160;&#160; Id</span>&#160;&#160;&#160; <span style="color: #0000ff;">int</span>&#160;&#160;&#160;&#160;&#160;&#160; NOT NULL <span style="color: #0000ff;">PRIMARY KEY</span>,<br /> &#160;&#160;&#160; col1&#160; <span style="color: #0000ff;">char</span>(20)&#160; NULL <br />); <br /><span style="color: #0000ff;">GO</span></strong></span></p>
<p>Sofern f&#252;r die Relation nicht explizit ein Clustered Index definiert wird, erzeugt SQL Server automatisch f&#252;r den PRIMARY KEY einen clustered Index. Beweis liefert die Untersuchung der Indexe und Einschr&#228;nkungen f&#252;r die zuvor erstellte Relation</p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong>SELECT <span style="color: #9b00d3;">OBJECT_NAME</span><span style="color: #000000;">(parent_object_id)</span>&#160; AS <span style="color: #000000;">table_name,<br /> &#160;&#160;&#160;&#160;&#160;&#160; k.name</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AS<span style="color: #000000;"> constraint_name,<br /> &#160;&#160;&#160;&#160;&#160;&#160; k.type</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AS<span style="color: #000000;"> constraint_type,<br /> &#160;&#160;&#160;&#160;&#160;&#160; k.type_desc</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AS<span style="color: #000000;"> constraint_type_desc,<br /> &#160;&#160;&#160;&#160;&#160;&#160; unique_index_id,<br /> &#160;&#160;&#160;&#160;&#160;&#160; is_system_named,<br /> &#160;&#160;&#160;&#160;&#160;&#160; i.name</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AS<span style="color: #000000;"> index_name,<br /> &#160;&#160;&#160;&#160;&#160;&#160; i.type_desc&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>AS<span style="color: #000000;"> index_type<br /> </span>FROM&#160;&#160; <span style="color: #008040;">sys.key_constraints</span> <span style="color: #000000;">k </span>LEFT JOIN <span style="color: #008040;">sys.indexes</span> i<br /> &#160;&#160;&#160;&#160;&#160;&#160; ON <span style="color: #000000;">(<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; k.parent_object_id =</span> <span style="color: #000000;">i.object_id AND<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; k.unique_index_id = i.index_id<br /> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; )<br /> </span>WHERE&#160; <span style="color: #000000;">parent_object_id =</span> <span style="color: #9b00d3;">OBJECT_ID</span><span style="color: #000000;">(</span><span style="color: #ff0000;">'dbo.master_table'</span><span style="color: #000000;">, </span><span style="color: #ff0000;">'U'</span><span style="color: #000000;">);</span></strong></span></p>
<div class="image_block"><a href="http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 01.png?mtime=1369122093"><img src="http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 01.png?mtime=1369122093" alt="" width="906" height="69" /></a></div>
<p>Das DMO sys.key_constraints enth&#228;lt jeweils eine Zeile f&#252;r jedes Objekt, dass entweder eine PRIMARY KEY oder eine UNIQUE Einschr&#228;nkung besitzt. Die obige Abbildung zeigt, dass der PRIMARY KEY eindeutig ist und der Name der Einschr&#228;nkung automatisch durch SQL Server erstellt wurde. Handelt es sich um eine eindeutige Einschr&#228;nkung (UNIQUE), kann der entsprechende UNIQUE Index &#252;ber die [index_id] der zugeh&#246;rigen Relation ermittelt werden.</p>
<p>Da eine Einschr&#228;nkung auch durch individuelle Namensgebung erstellt werden kann, f&#252;hrt das nachfolgende Beispiel ebenfalls zur Erstellung des PRIMARY KEY mit dem Unterschied, dass der Name durch den Ersteller vordefiniert wird.</p>
<p><span style="font-family: Courier New;"><strong><span style="color: #000000;"><span style="color: #0000ff;">CREATE TABLE</span> </span><span style="color: #000000;">dbo.master_table<br /> (<br /> &#160;&#160;&#160; Id</span>&#160;&#160;&#160; <span style="color: #0000ff;">int</span>&#160;&#160;&#160;&#160;&#160;&#160; NOT NULL,<br /> &#160;&#160;&#160; col1&#160; <span style="color: #0000ff;">char</span>(20)&#160; NULL, <br />&#160;&#160;&#160; <span style="color: #0000ff;">CONSTRAINT</span> pk_master_table_id <span style="color: #0000ff;">PRIMARY KEY</span> (Id)<br /> );<br /> <span style="color: #0000ff;">GO</span></strong></span></p>
<div class="image_block"><a href="http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 02.png?mtime=1369122101"><img src="http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 02.png?mtime=1369122101" alt="" width="870" height="66" /></a></div>
<p>Da nun der Name des PRIMARY KEY selbst festgelegt worden ist, ist das Attribut [is_system_named] nun 0. Weitere Einstellungen haben sich nicht ge&#228;ndert. Das ein PRIMARY KEY nicht zwingend ein Clustered Index ist, zeigt das n&#228;chste Beispiel sehr deutlich:</p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong>CREATE TABLE <span style="color: #000000;">dbo.master_table<br /> (<br /> &#160;&#160;&#160; Id</span>&#160;&#160;&#160; int&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #000000;">NOT NULL,<br /> &#160;&#160;&#160; col1&#160; </span>char<span style="color: #000000;">(20)&#160; NULL,<br />&#160;&#160;&#160; </span>CONSTRAINT <span style="color: #000000;">pk_master_table_id</span> PRIMARY KEY NONCLUSTERED <span style="color: #000000;">(id)<br /> );<br /> </span>GO</strong></span></p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong>CREATE CLUSTERED INDEX <span style="color: #000000;">ix_master_table_col1</span> ON <span style="color: #000000;">dbo.master_table (col1);<br /> </span>GO</strong></span></p>
<p>Unabh&#228;ngig von der Existenz eines Clustered Index kann der PRIMARY KEY definiert werden. Da ein PRIMARY KEY nur dann als Clustered Index angelegt wird, wenn noch kein Clustered Index existiert, musste in dem obigen Beispiel der PRIMARY KEY explizit mit der Option NONCLUSTERED definiert werden um eine automatische Erstellung des Clustered Index zu verhindern. Ein Blick auf die Einschr&#228;nkungen und die vorhandenen Indexe zeigt das Ergebnis.</p>
<div class="image_block"><a href="http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 03.png?mtime=1369122107"><img src="http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 03.png?mtime=1369122107" alt="" width="894" height="137" /></a></div>
<h2>Wozu wird ein Primary Key verwendet?</h2>
<p>Der Sinn und Zweck eines PRIMARY KEY ergibt sich aus den Eigenschaften der Einschr&#228;nkung selbst. Da ein PRIMARY KEY keine NULL-Werte enthalten darf und eindeutig sein muss, eignet er sich f&#252;r die Durchsetzung von DRI (Deklarative Referenzielle Integrit&#228;t).&#160; Unter Referentieller Integrit&#228;t versteht man Bedingungen, die zur Sicherung der Datenintegrit&#228;t bei Nutzung relationaler Datenbanken beitragen k&#246;nnen. Nach der RI-Regel d&#252;rfen Datens&#228;tze (&#252;ber ihre Fremdschl&#252;ssel) nur auf existierende Datens&#228;tze verweisen.</p>
<p>Danach besteht die Referenzielle Integrit&#228;t grunds&#228;tzlich aus zwei Teilen:</p>
<ol>
<li>Ein neuer Datensatz mit einem Fremdschl&#252;ssel kann nur dann in einer Tabelle eingef&#252;gt werden, wenn in der referenzierten Tabelle ein Datensatz mit entsprechendem Wert im Prim&#228;rschl&#252;ssel oder einem eindeutigen Alternativschl&#252;ssel existiert.</li>
<li>Eine Datensatzl&#246;schung oder &#196;nderung des Schl&#252;ssels in einem Prim&#228;r-Datensatz ist nur m&#246;glich, wenn zu diesem Datensatz keine abh&#228;ngigen Datens&#228;tze in Beziehung stehen.</li>
</ol>
<p>SQL Server ben&#246;tigt f&#252;r Referenzielle Integrit&#228;t nicht zwingend einen PRIMARY KEY; vielmehr sind nur die Eigenschaften eines PRIMARY KEY f&#252;r SQL Server von Relevanz f&#252;r die Durchsetzung von Referenzieller Integrit&#228;t. Die beiden nachfolgenden Skriptbeispiele sollen diesen Zusammenhang verdeutlichen. F&#252;r die Definition eines Fremdschl&#252;ssels ist zwingend erforderlich, dass das Prim&#228;rattribut der Masterrelation weder NULL-Werte besitzt noch mehrfach vorkommen darf. Das nachfolgende Script wird fehlschlagen, da SQL Server nicht in der Lage ist, eindeutige Schl&#252;sselwerte in [master_table] sicher zu stellen:</p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong>CREATE TABLE<span style="color: #000000;"> dbo.master_table<br /> (<br /> &#160;&#160;&#160; Id</span>&#160;&#160; int&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #000000;">NOT NULL,<br /> &#160;&#160;&#160; col1 </span><span style="color: #0000ff;">char</span><span style="color: #000000;">(20)&#160; NULL<br />);<br /> </span>GO</strong></span></p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong>CREATE TABLE <span style="color: #000000;">dbo.detail_table<br /> (<br /> &#160;&#160;&#160; Master_id</span>&#160;&#160; int&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #000000;">NOT NULL,<br /> &#160;&#160;&#160; detail_id&#160;&#160; </span>int&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #000000;">NOT NULL,<br /> &#160;&#160;&#160; col1&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>char<span style="color: #000000;">(20)&#160; NOT NULL,</span></strong></span></p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong><span style="color: #000000;">&#160;&#160;&#160; </span>CONSTRAINT <span style="color: #000000;">fk_master_table_id</span> FOREIGN KEY <span style="color: #000000;">(master_id)<br /> </span>&#160;&#160;&#160; REFERENCES <span style="color: #000000;">dbo.master_table(Id)<br /> </span>&#160;&#160;&#160; ON DELETE CASCADE<br /> <span style="color: #000000;">);</span></strong></span></p>
<p>Wird das obige Script ausgef&#252;hrt, wird der nachfolgende Fehler ausgel&#246;st. Die Fehlerbeschreibung ist selbsterkl&#228;rend:</p>
<p><span style="color: #ff0000; font-family: Courier New;">Meldung 1776, Ebene 16, Status 0, Zeile 2 In der dbo.master_table-Tabelle, auf die verwiesen wird, befinden sich keine prim&#228;ren <strong>oder</strong> Kandidatenschl&#252;ssel, die mit der verweisenden Spaltenliste im fk_master_table_id-Fremdschl&#252;ssel &#252;bereinstimmen<strong>.</strong></span></p>
<p>F&#252;r eine Fremdschl&#252;sselbeziehung wird ENTWEDER ein PRIMARY KEY oder ein UNIQUE NOT NULL Index ben&#246;tigt. Statt also eines PRIMARY KEY kann auch eine UNIQUE-Einschr&#228;nkung verwendet werden. &#196;ndert man das Script zur Erstellung der Relationen wie folgt um, kann die Einschr&#228;nkung problemlos erstellt werden:</p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong>CREATE TABLE<span style="color: #000000;"> dbo.master_table<br /> (<br /> &#160;&#160;&#160; Id</span>&#160;&#160; int&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #000000;">NOT NULL,<br /> &#160;&#160;&#160; col1 </span><span style="color: #0000ff;">char</span><span style="color: #000000;">(20)&#160; NULL,<br /><br />&#160;&#160;&#160; <span style="color: #0000ff;">CONSTRAINT</span> ux_master_table_id <span style="color: #0000ff;">UNIQUE</span> (Id)&#160;&#160;&#160; <br />);<br /> </span>GO</strong></span></p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong>CREATE TABLE <span style="color: #000000;">dbo.detail_table<br /> (<br /> &#160;&#160;&#160; Master_id</span>&#160;&#160; int&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #000000;">NOT NULL,<br /> &#160;&#160;&#160; detail_id&#160;&#160; </span>int&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #000000;">NOT NULL,<br /> &#160;&#160;&#160; col1&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>char<span style="color: #000000;">(20)&#160; NOT NULL,</span></strong></span></p>
<p><span style="color: #0000ff; font-family: Courier New;"><strong><span style="color: #000000;">&#160;&#160;&#160; </span>CONSTRAINT <span style="color: #000000;">fk_master_table_id</span> FOREIGN KEY <span style="color: #000000;">(master_id)<br /> </span>&#160;&#160;&#160; REFERENCES <span style="color: #000000;">dbo.master_table(Id)<br /> </span>&#160;&#160;&#160; ON DELETE CASCADE<br /> <span style="color: #000000;">);</span></strong></span></p>
<p>Das Script l&#228;uft fehlerfrei durch und die Fremdschl&#252;ssel-Einschr&#228;nkung wird erstellt, da f&#252;r das Fremdschl&#252;ssel-Attribut [Id] die Einschr&#228;nkungen &#8220;NOT NULL&#8221; und &#8220;UNIQUE&#8221; vorhanden sind. Es bedarf keiner weiteren Einschr&#228;nkungen mehr. Schaut man sich anschlie&#223;end die in der Relation [dbo].[master_table] befindlichen Indexe an, stellt man fest, dass die Relation selbst immer noch ein HEAP ist und keinen clustered Index besitzt.</p>
<p><span style="color: #0000ff;"><strong><span style="font-family: courier new,courier;">SELECT <span style="color: #000000;">*</span> FROM sys.indexes WHERE <span style="color: #000000;">object_id =</span> <span style="color: #ff00ff;">OBJECT_ID</span><span style="color: #000000;">(</span><span style="color: #ff0000;">'dbo.master_table'</span><span style="color: #000000;">,</span> <span style="color: #000000;"><span style="color: #ff0000;">'U'</span>);</span></span></strong></span></p>
<div class="image_block"><a href="http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 04.png?mtime=1369122115"><img src="http://www.insidesql.org/blogs/media/blogs/uricken/Clustered_Index_vs_Primary_Key/Primary Key 04.png?mtime=1369122115" alt="" width="845" height="60" /></a></div>
<h2>Fazit</h2>
<p>Die Definition eines PRIMARY KEY f&#252;r eine Relation hat NICHTS mit der Definition und der Funktionalit&#228;t eines Clustered Index zu tun. Beide Verfahren sind unabh&#228;ngig voneinander zu betrachten und verfolgen ganz verschiedene Ans&#228;tze. W&#228;hrend ein PRIMARY KEY eine Eigenschaft einer Relation ist, ist der Clustered Index die Relation selbst. W&#228;hrend ein Clustered Index ausschlie&#223;lich f&#252;r die physikalische Ordnung der Datens&#228;tze verantwortlich ist, dient der PRIMARY KEY der Durchsetzung von klar vordefinierten Vorgaben f&#252;r das Schl&#252;sselattribut eines Datensatzes (Eindeutigkeit und NOT NULLABLE).</p>
<p>Herzlichen Dank f&#252;r&#8217;s Lesen</p>
<table style="width: 600px;" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="159">PRIMARY KEY</td>
<td valign="top" width="441"><a title="http://msdn.microsoft.com/de-de/library/ms191236(v=sql.105).aspx" href="http://msdn.microsoft.com/de-de/library/ms191236.aspx" target="_blank">http://msdn.microsoft.com/de-de/library/ms191236.aspx</a></td>
</tr>
<tr>
<td valign="top" width="159">CLUSTERED INDEX</td>
<td valign="top" width="441"><a title="http://msdn.microsoft.com/de-de/library/ms177443.aspx" href="http://msdn.microsoft.com/de-de/library/ms177443.aspx" target="_blank">http://msdn.microsoft.com/de-de/library/ms177443.aspx</a></td>
</tr>
<tr>
<td valign="top" width="159">Referentielle Integrit&#228;t</td>
<td valign="top" width="441"><a title="http://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t" href="http://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t" target="_blank">http://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t</a></td>
</tr>
<tr>
<td valign="top" width="159">sys.key_constraints</td>
<td valign="top" width="441"><a title="http://msdn.microsoft.com/de-de/library/ms174321.aspx" href="http://msdn.microsoft.com/de-de/library/ms174321.aspx" target="_blank">http://msdn.microsoft.com/de-de/library/ms174321.aspx</a></td>
</tr>
<tr>
<td valign="top" width="159">sys.indexes</td>
<td valign="top" width="441"><a title="http://msdn.microsoft.com/de-de/library/ms173760(v=sql.105).aspx" href="http://msdn.microsoft.com/de-de/library/ms173760(v=sql.105).aspx" target="_blank">http://msdn.microsoft.com/de-de/library/ms173760.aspx</a></td>
</tr>
</tbody>
</table>]]></content:encoded>
								<comments>http://www.insidesql.org/blogs/uricken/2013/05/20/unterschied-zwischen-primary-key-und#comments</comments>
			<wfw:commentRss>http://www.insidesql.org/blogs/uricken/?tempskin=_rss2&#38;disp=comments&#38;p=3488</wfw:commentRss>
		</item>
				<item>
			<title>Discrepancy by estimated TEMPDB space for CHECKDB and CHECKALLOC - WITH ESTIMATEONlY</title>
			<link>http://www.insidesql.org/blogs/tosc/2013/05/17/discrepancy-by-estimated-tempdb-space-for-checkdb-and-checkalloc-with-estimateonly</link>
			<pubDate>Fri, 17 May 2013 09:39:00 +0000</pubDate>			<dc:creator>Torsten Schuessler</dc:creator>
			<category domain="main">SQL Server</category>
<category domain="alt">Community &amp; PASS</category>			<guid isPermaLink="false">3487@http://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;I came around this problem (depends on SQL Server 2008 R2 jutst to SQL Server 2012) by reading &lt;a href=&quot;http://www.sqlskills.com/blogs/paul&quot; target=&quot;_blank&quot;&gt;Paul S.&amp;#160;Randal&#039;s&lt;/a&gt; and &lt;a href=&quot;https://amihalj.wordpress.com/&quot; target=&quot;_blank&quot;&gt;Ana&#039;s&lt;/a&gt; blog posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sqlskills.com/blogs/paul/how-does-dbcc-checkdb-with-estimateonly-work/&quot; target=&quot;_blank&quot;&gt;How does DBCC CHECKDB WITH ESTIMATEONLY work &lt;/a&gt;(Paul)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://amihalj.wordpress.com/2011/11/11/dbcc-checkdb-with-estimateonly-do-you-trust-it/&quot; target=&quot;_blank&quot;&gt;DBCC CHECKDB WITH ESTIMATEONLY: Do you trust it?&lt;/a&gt; (Ana)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms176064.aspx&quot; target=&quot;_blank&quot;&gt;DBCC CHECKDB&lt;/a&gt; runs &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms188422.aspx&quot; target=&quot;_blank&quot;&gt;CHECKALLOC&lt;/a&gt;, &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms174338.aspx&quot; target=&quot;_blank&quot;&gt;CHECKTABLE&lt;/a&gt;, &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms186720.aspx&quot; target=&quot;_blank&quot;&gt;CHECKCATALOG&lt;/a&gt;&amp;#160;etc. against database, tables, views and so on. And I have learnded, however CHECKDB is executed against &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms187837.aspx&quot; target=&quot;_blank&quot;&gt;master database&lt;/a&gt;, a second CHECKDB is also running internally on the &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms190940.aspx&quot; target=&quot;_blank&quot;&gt;mssqlsystemressource&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So in my way, I want only&amp;#160;make consistency check of disk space allocation&amp;#160;by DBCC CHECKALLOC WITH ESTIMATEONLY against a ~ 200GB database, to know the estimated amount of &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms190768.aspx&quot; target=&quot;_blank&quot;&gt;tempdb&lt;/a&gt; space.&lt;/p&gt;
&lt;p&gt;I run following DBCC command on SQL Server 2012 Enterprise Edition:&lt;/p&gt;
&lt;pre&gt;&lt;code style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;DBCC &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;CHECKALLOC &lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;WITH &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;ESTIMATEONLY&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;TABLERESULTS&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And I get this result&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Estimated TEMPDB space (in KB) needed for CHECKALLOC on database XXX = 35383596.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;OK, nothing special - but I thought about the posts of Ana and Paul, and a blog entry of &lt;a href=&quot;http://blogs.msdn.com/b/saponsqlserver/&quot; target=&quot;_blank&quot;&gt;Running SQP on SQL Server Blog&lt;/a&gt; - &lt;a href=&quot;http://blogs.msdn.com/b/saponsqlserver/archive/2011/12/22/faster-dbcc-checkdb-released-in-sql-2008-r2-sp1-traceflag-2562-amp-2549.aspx&quot; target=&quot;_blank&quot;&gt;Faster DBCC CHECKDB Released in SQL 2008 R2 SP1 CU4 : Traceflag 2562 &amp;amp; 2549&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So next shot comparing CHECKDB and CHECKALLOC:&lt;/p&gt;
&lt;pre&gt;&lt;code style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;DBCC &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;CHECKDB &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;WITH &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;ESTIMATEONLY&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;TABLERESULTS&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;; &lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;DBCC &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;CHECKALLOC &lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;WITH &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;ESTIMATEONLY&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;TABLERESULTS&lt;/span&gt;&lt;span style=&quot;color: gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;GO&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the results are diffrent!&lt;br /&gt;For CHECKDB:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Estimated TEMPDB space (in KB) needed for CHECKDB on database XXX = &lt;strong&gt;27165&lt;/strong&gt;.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And for CHECKALLOC:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Estimated TEMPDB space (in KB) needed for CHECKALLOC on database XXX = &lt;strong&gt;35383596&lt;/strong&gt;.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This isn&#039;t an expected result - what a &lt;strong&gt;discrepancy&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;By the way I have made a &lt;a href=&quot;http://connect.microsoft.com/&quot; target=&quot;_blank&quot;&gt;Microsoft Connect&lt;/a&gt; entry:&lt;a href=&quot;https://connect.microsoft.com/SQLServer/feedback/details/787049/discrepancy-by-estimated-tempdb-space-for-checkdb-and-checkalloc-with-estimateonly&quot; target=&quot;_blank&quot;&gt; http://connect.microsoft.com/SQLServer/feedback/details/787049/discrepancy-by-estimated-tempdb-space-for-checkdb-and-checkalloc-with-estimateonly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So feel free to vote.&lt;/p&gt;
&lt;p&gt;I wish you a nice day,&lt;br /&gt;&lt;a href=&quot;http://feeds2.feedburner.com/TorstenSchuessler&quot; target=&quot;_blank&quot;&gt;tosc&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;http://feeds.feedburner.com/~r/TorstenSchuessler/~6/1&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;border: 0;&quot; src=&quot;http://feeds.feedburner.com/TorstenSchuessler.1.gif&quot; alt=&quot;Torsten Schuessler&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&quot;Try not to become a man of success but rather to become a man of value.&quot;&lt;/em&gt;&lt;br /&gt;Albert Einstein&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>I came around this problem (depends on SQL Server 2008 R2 jutst to SQL Server 2012) by reading <a href="http://www.sqlskills.com/blogs/paul" target="_blank">Paul S.&#160;Randal's</a> and <a href="https://amihalj.wordpress.com/" target="_blank">Ana's</a> blog posts:</p>
<ul>
<li><a href="http://www.sqlskills.com/blogs/paul/how-does-dbcc-checkdb-with-estimateonly-work/" target="_blank">How does DBCC CHECKDB WITH ESTIMATEONLY work </a>(Paul)</li>
<li><a href="https://amihalj.wordpress.com/2011/11/11/dbcc-checkdb-with-estimateonly-do-you-trust-it/" target="_blank">DBCC CHECKDB WITH ESTIMATEONLY: Do you trust it?</a> (Ana)</li>
</ul>
<p><a href="http://technet.microsoft.com/en-us/library/ms176064.aspx" target="_blank">DBCC CHECKDB</a> runs <a href="http://technet.microsoft.com/en-us/library/ms188422.aspx" target="_blank">CHECKALLOC</a>, <a href="http://technet.microsoft.com/en-us/library/ms174338.aspx" target="_blank">CHECKTABLE</a>, <a href="http://technet.microsoft.com/en-us/library/ms186720.aspx" target="_blank">CHECKCATALOG</a>&#160;etc. against database, tables, views and so on. And I have learnded, however CHECKDB is executed against <a href="http://technet.microsoft.com/en-us/library/ms187837.aspx" target="_blank">master database</a>, a second CHECKDB is also running internally on the <a href="http://technet.microsoft.com/en-us/library/ms190940.aspx" target="_blank">mssqlsystemressource</a>.</p>
<p>So in my way, I want only&#160;make consistency check of disk space allocation&#160;by DBCC CHECKALLOC WITH ESTIMATEONLY against a ~ 200GB database, to know the estimated amount of <a href="http://technet.microsoft.com/en-us/library/ms190768.aspx" target="_blank">tempdb</a> space.</p>
<p>I run following DBCC command on SQL Server 2012 Enterprise Edition:</p>
<pre><code style="font-size: 12px;"><span style="color: blue;">DBCC </span><span style="color: black;">CHECKALLOC </span><span style="color: gray;">() </span><span style="color: blue;">WITH </span><span style="color: black;">ESTIMATEONLY</span><span style="color: gray;">, </span><span style="color: black;">TABLERESULTS</span><span style="color: gray;">;<br /></span><span style="color: black;">GO</span></code></pre>
<p>And I get this result</p>
<pre><code>Estimated TEMPDB space (in KB) needed for CHECKALLOC on database XXX = 35383596.</code></pre>
<p>OK, nothing special - but I thought about the posts of Ana and Paul, and a blog entry of <a href="http://blogs.msdn.com/b/saponsqlserver/" target="_blank">Running SQP on SQL Server Blog</a> - <a href="http://blogs.msdn.com/b/saponsqlserver/archive/2011/12/22/faster-dbcc-checkdb-released-in-sql-2008-r2-sp1-traceflag-2562-amp-2549.aspx" target="_blank">Faster DBCC CHECKDB Released in SQL 2008 R2 SP1 CU4 : Traceflag 2562 &amp; 2549</a></p>
<p>So next shot comparing CHECKDB and CHECKALLOC:</p>
<pre><code style="font-size: 12px;"><span style="color: blue;">DBCC </span><span style="color: black;">CHECKDB </span><span style="color: blue;">WITH </span><span style="color: black;">ESTIMATEONLY</span><span style="color: gray;">, </span><span style="color: black;">TABLERESULTS</span><span style="color: gray;">; <br /></span><span style="color: black;">GO<br /><br /></span><span style="color: blue;">DBCC </span><span style="color: black;">CHECKALLOC </span><span style="color: blue;">WITH </span><span style="color: black;">ESTIMATEONLY</span><span style="color: gray;">, </span><span style="color: black;">TABLERESULTS</span><span style="color: gray;">;<br /></span><span style="color: black;">GO<br /></span></code></pre>
<p>And the results are diffrent!<br />For CHECKDB:</p>
<pre><code>Estimated TEMPDB space (in KB) needed for CHECKDB on database XXX = <strong>27165</strong>.</code></pre>
<p>And for CHECKALLOC:</p>
<pre><code>Estimated TEMPDB space (in KB) needed for CHECKALLOC on database XXX = <strong>35383596</strong>.</code></pre>
<p>This isn't an expected result - what a <strong>discrepancy</strong>!</p>
<p>By the way I have made a <a href="http://connect.microsoft.com/" target="_blank">Microsoft Connect</a> entry:<a href="https://connect.microsoft.com/SQLServer/feedback/details/787049/discrepancy-by-estimated-tempdb-space-for-checkdb-and-checkalloc-with-estimateonly" target="_blank"> http://connect.microsoft.com/SQLServer/feedback/details/787049/discrepancy-by-estimated-tempdb-space-for-checkdb-and-checkalloc-with-estimateonly</a></p>
<p>So feel free to vote.</p>
<p>I wish you a nice day,<br /><a href="http://feeds2.feedburner.com/TorstenSchuessler" target="_blank">tosc</a></p>
<div class="image_block"><a href="http://feeds.feedburner.com/~r/TorstenSchuessler/~6/1" target="_blank"><img style="border: 0;" src="http://feeds.feedburner.com/TorstenSchuessler.1.gif" alt="Torsten Schuessler" /></a></div><div class="item_footer"><br /><p><em>"Try not to become a man of success but rather to become a man of value."</em><br />Albert Einstein</p></div>]]></content:encoded>
								<comments>http://www.insidesql.org/blogs/tosc/2013/05/17/discrepancy-by-estimated-tempdb-space-for-checkdb-and-checkalloc-with-estimateonly#comments</comments>
			<wfw:commentRss>http://www.insidesql.org/blogs/tosc/?tempskin=_rss2&#38;disp=comments&#38;p=3487</wfw:commentRss>
		</item>
				<item>
			<title>Entwickler vs. DBA</title>
			<link>http://www.insidesql.org/blogs/frankkalis/2013/05/08/entwickler-vs-dba</link>
			<pubDate>Wed, 08 May 2013 07:55:00 +0000</pubDate>			<dc:creator>Frank Kalis</dc:creator>
			<category domain="main">Vermischtes</category>			<guid isPermaLink="false">3483@http://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;Einer meiner Team-Kollegen hat mich gerade auf einen lesenswerten Artikel aufmerksam gemacht.&lt;/p&gt;&lt;a href=&quot;http://www.insidesql.org/blogs/frankkalis/2013/05/08/entwickler-vs-dba#more3483&quot;&gt;Full story &amp;raquo;&lt;/a&gt;</description>
			<content:encoded><![CDATA[<p>Einer meiner Team-Kollegen hat mich gerade auf einen lesenswerten Artikel aufmerksam gemacht.</p><a href="http://www.insidesql.org/blogs/frankkalis/2013/05/08/entwickler-vs-dba#more3483">Full story &raquo;</a>]]></content:encoded>
								<comments>http://www.insidesql.org/blogs/frankkalis/2013/05/08/entwickler-vs-dba#comments</comments>
			<wfw:commentRss>http://www.insidesql.org/blogs/frankkalis/?tempskin=_rss2&#38;disp=comments&#38;p=3483</wfw:commentRss>
		</item>
			</channel>
</rss>
