Die neue SQL Server Master-Class: Warum ein SQLSentry Bootcamp

The new SQL Server Master-Class in – why a SQLSentry Bootcamp

(DE)
Die wichtigsten Infos gerafft zuerst:
Vom 26. bis 28. Juni führe ich in Frankfurt eine neue SQL Server Master-Class durch: Das Performance Troubleshooting Bootcamp mit SQLSentry (Kürzel: PSS*) durch. Hier für die Eiligen der Link zur Anmeldung:

(EN)
First off, the most important information in a nutshell:
From 26-28 June, I am conducting a new SQL Server Master-Class: The Performance Troubleshooting Bootcamp with SQLSentry (shorthand: PSS*). For those in a hurry, the link for registration right below:

 SQL-Server-Master-Class.com/#PSS

 SentryOne Master-Class

Hintergründe zu der Master-Class Reihe

Seit 2013 führe ich unter dem Label SQL Server Master-Class 1-2 Mal jährlich (und zusätzlich je nach Bedarf inhouse bei Kunden) diese offenen Seminare durch. Das erste waren 2-Tage zu Extended Events (SQL Server Master-Class Seminare – Für Alle, die es genau wissen wollen – Start im Mai mit Extended Events).
Der Anspruch, den ich mit diesen Trainings habe, ist, die Themen in aller Tiefe und Praxisnah zu vermitteln – und damit eine Alternative oder Ergänzung zu den an verschiedenen Problemen leidenden MOC-Trainings (unrealistische Themenvielfalt, fehlerhafte Unterlagen, unerfahrene weil billige Trainer – „man bekommt, wofür man bezahlt“, etc.)  anzubieten.
Dass das gut gelingt, lässt sich hier in einigen Kundenstimmen nachlesen.

Background to the Master-Class series

Since 2013, I have been conducting these open seminars under the label SQL Server Master-Class once or twice a year (and additionally inhouse with clients, as needed). The first ones were 2-day classes on Extended Events (SQL Server Master-Class Seminars – The tools at your fingertips – Start in May with Extended Events).
With these trainings I seek an in-depth and practice-oriented approach to teaching the topics – thus offering an alternative or complement to the MOC trainings that suffer from various problems (unrealistic thematic diversity, faulty material, inexperienced because cheap trainers – “you get what you pay for”, etc.).

This has been a successful approach, as you can read in these customer reviews

Warum eine Master-Class zu SQLSentry?

Beginnen wir mal mit:

Warum SQLSentry?
Man kann sich jetzt gut fragen, warum jemand wie ich, der an sich unabhängig von Drittherstellern agiert, nun ein Training anbietet, das stark (ca. 50%) auf der Software eines bestimmten Herstellers basiert.

Das erläutere ich gerne. Dazu zunächst ein Schritt zurück:

Der Hintergrund, warum ich ungern auf bestimmte Software- (oder Hardware)-Hersteller verweise, ist, dass darauf basierende Entscheidungen dann naturgemäß auf mich zurückgeführt werden. Und es ist schon bei SQL Server selbst eine Herausforderung, das jeweils passendste („beste“, wenn man so will) Feature für bestimmte Ansprüche zu empfehlen. Das ist meine Hauptaufgabe, und dafür bin ich (zweifach) Master. Jetzt noch den Überblick über andere Software-Hersteller, deren Tools und vor allem ja variierende Qualität zu behalten, ist alles andere als trivial.

Daher muss es sich schon wirklich um das mit Abstand beste Werkzeug in einem Bereich handeln, und das auch mit genügend Kontinuität, dass ich meinen Namen damit verbinden lasse. Und so ist SQLSentry von SentryOne im Bereich Monitoring von SQL Server (aber auch SSAS, und Azure-Komponenten) ohne Zweifel eine eigene Liga.

Warum? Würde es nur ein einzelnes Merkmal sein, würde ich mich damit nicht aufhalten.

- Ganz nebenbei: gerade als MVP wird man häufig von Herstellern angeschrieben und kann deren Produkte testen oder mit Artikeln und ähnlichem mit Bewerben. – Das ist hier nicht der Fall. Diese Master-Class und dieser Artikel basieren vollkommen auf Eigeninitiative.

Why a Master-Class on SQLSentry?

Let’s start with:

Why SQLSentry?
One may wonder why someone like me who is acting independently of third-parties is now offering a training strongly based (approx. 50%) on the software of a certain manufacturer.

I am happy to elaborate on this. But first, let’s take a step back:

The reason as to why I am reluctant to refer to certain software (or hardware) manufacturers is that decisions based on them will naturally be attributed to me. And even with SQL Server itself, it is a challenge to recommend the most suitable (“the best,” if you will), feature for particular demands. That is my main task, and that is what I am a (two-fold) Master for. Keeping track of other software manufacturers, their tools and, above all, their varying quality, on top of all this, is tough.

Therefore, it must really be the very best tool in a particular area, and with sufficient continuity, before I associate my name with it. And it so happens that SQLSentry by SentryOne is without doubt its own league in the area of Monitoring SQL Server (but also SSAS and Azure components).

Why? If it was just a single feature, I would not be sticking to it.

- By the way: especially as an MVP one gets contacted a lot by software-producers and can test their products or write articles on them. – This is not the case here. This Master-Class and this article are based on my own initiative.

 

 

 

SQLSentry enthält eine Vielzahl von spezialisierten Komponenten für verschiedene Bereiche in SQL Server, von denen einige auch patentiert sind, aber ich versuche es kurzzufassen und nur die speziellsten zu nennen:

·       Der Event Calendar führt sämtliche SQL Agent Jobs, aber auch Windows Tasks sowie Auffällige Performance-Events in einem Outlook-Style Kalenderformat zusammen, und erlaubt so zeitliche Korrelationen

·       Mit Intelligent Alerting lassen sich komplexe Konditionen definieren – denn oft sind einzelne Performance-Messzahlen alleine gar nicht ausreichend für eine Bewertung. Hiermit lassen sich diese kombinieren. Und damit ist auch Pro-Aktives Monitoring möglich(!)

·       Die Disk-Activity-Ansicht zeigt SQL-Dateiverwendung im Detail grafisch aufbereitet

·       Die AlwaysOn Availability Group-Visualisierungen zeigen die Architektur als auch Auslastung der Availability Gruppen – eigentlich fehlt mir nur noch etwas Vergleichbares für Replikation :-)

·       Index- und Statistik-Analyse – von Fragmentierung bis herunter auf Histogram-Ebene

·       Chaining von Jobs – Abläufe verschiedener Komponenten über Server hinweg verketten

·       Und natürlich das Performance Dashboard selber: Dies zeigt nicht nur die Auslastung des Servers (Windows, SQL und ggfl. VM Host), sondern erlaubt es auch schnell eigene Baselines anzulegen oder auf automatisch angelegte (wie „letzte Woche“, „gestern“) zurückzugreifen und für Vergleiche zu hinterlegen.

 

SQLSentry contains a plethora of specialized components for different areas in SQL Server, of which some are also patented, but I will try to keep it short and just name the most particular ones:

  • The Event Calendar merges all SQL Agent Jobs but also Windows Tasks and striking Performance Events in an outlook-style calendar format, thus allowing for time correlations.

  • Intelligent Alerting allows you to define complex conditions – because oftentimes, singular Performance Metrics alone do not suffice for an evaluation. With this feature, they can be combined. And this is how Pro-Active Monitoring is possible (!).

  • The Disk-Activity view shows the SQL file usage in a detailed graphic representation.

  • The AlwaysOn Availability Group Visualizations show the architecture and utilization of the Availability Groups – in fact, what’s still missing is something comparable for Replication. :-)

  • Index- and statistics analysis – from fragmentation down to histogram level

  • Job Chaining – chaining processes of different components across servers
  • And of course, the Performance Dashboard itself: it shows not only the utilization of the server (Windows, SQL and possibly VM Host), but it also makes it possible to quickly create one’s own baselines or to rely on automatically created ones (like “last week,” “yesterday”) and save them for comparisons.  

 

 SQLSentry_performance-advisor_dashboard

Abgesehen von den reinen Features, welche für sich gesehen schon konkurrenzlos sind, gibt es 2 weitere Aspekte, welche für ein professionelles Performance-Monitoring-Werkzeug wichtig sind:

1.       Geringer Overhead auf das beobachtete System: Tatsächlich hat SentryOne als einziger Hersteller detaillierte Zahlen zu dem Impact auf den überwachten Server selber veröffentlicht - und dieser ist aufgrund der optimierten selbstentwickelten Technologie sehr gering – was man über andere Tools häufig anders hört.

 Apart from the mere features that are already in themselves unrivaled, there are at least 2 more aspects that are important to a professional Performance Monitoring tool:

  1. Low Overhead on the monitored system: As a matter of fact, SentryOne is the only manufacturer to have published detailed numbers on the impact on the monitored server – and due to the optimized self-developed technology, it is very low – unlike what you will often hear about other tools. 

 

SQL Sentry: Overhead Analysis: http://bit.ly/SQLSentryOverheadAnalysisDOC

 

2.       Update-Zyklen: Auch das ein wichtiger Aspekt. Das Tool wird ständig weiterentwickelt. 2-4 Updates im Jahr sind die Regel, und mit im Maintenance-Service inkludiert (wie auch der Support).

 2. Update cycles: Also an important aspect. The tool is continually being developed further. Generally, there are 2-4 updates a year, which are included in the maintenance service (as is support).
 

Das alles sind die Gründe, weshalb ich reinen Gewissens hinter meiner „Produktempfehlung“ stehen kann, wohl wissend, dass dieses auf hohem Niveau weitergepflegt wird.

Ich möchte damit allerdings nicht sagen, dass man nicht auch mal andere Tools in Erwägung ziehen sollte. Es kommt auf die eigene Umgebung an: Größe, Komplexität, Performance-Level, SLA (Reaktionszeit: Proaktiv, oder Reaktiv ausreichend?), und nochmal Zeit: Zeit, wichtige Korrelationen manuell durchzuführen, Zeit, sich bestimmte Visualisierungen selbst zu bauen. - Wer Zeit hat, für den mag eine Ersparnis von ~ 1 Consultant-Tagessatz (pro überwachten Server) sinnvoll sein, und ich würde mich auch nicht scheuen, dies ggf. selber zu empfehlen. Auch dafür kann man mich gern ansprechen. (Ich bin also keineswegs SentryOne gegenüber irgendwie verpflichtet.)

These are the reasons as to why I can back my “product recommendation” with a clear conscience, knowing well that this product will be further maintained and updated at a high level on an ongoing basis.

However, I do not mean to say that one shouldn’t also consider other tools from time to time. It depends on one’s environment: Size, complexity, performance level, SLA (reaction time: proactive, or is reactive sufficient?), and, again, time: Time to manually execute important correlations, time to build certain visualizations oneself. – For those with time on their hands, a saving of approx. 1 consultant day rate (per monitored server) may make sense, and I would not hesitate to recommend this myself. That’s also what I am here to help with. (So just to be clear, I am in no way obliged to SentryOne.)

 

Warum nun eine Master-Class zu SQLSentry?

Kommen wir nun zu der Eingangsfrage, nachdem das Tool der Wahl begründet ist:

Ganz einfach: Die Nachfrage. Ich habe mittlerweile einige Kunden, die mit SQLSentry arbeiten. Und da dieses Tool wie beschrieben umfangreich und mächtig ist, macht es hochgradig Sinn, den Umgang damit und die Konfigurationsmöglichkeiten im Detail zu erlernen, um die gesetzten Ziele:(Proaktives Monitoring, Zeit-effektives Troubleshooting, zu erreichen.

So why a Master-Class on SQLSentry?

Having justified the choice tool, let’s now turn to the initial question:

It’s simple: The demand. I have several clients by now who work with SQLSentry. Since this tool is comprehensive and powerful, as described above, it makes absolutely sense to learn the handling and configuration possibilities in detail in order to achieve the set goals: proactive monitoring, time-efficient troubleshooting.

 

Ich habe mich außerdem entschlossen, das Training ca. 50-50 aufzuteilen in native SQL Techniken und spezifische Bedienung von SQLSentry. Der Grund hierfür ist, dass meiner Meinung nach eine gewisse Kenntnis der internen Mechanismen und Beobachtungsmöglichkeiten von SQL Server zum einen dem Verständnis dienen, warum SQLSentry dies oder jenes so oder so macht, und zum anderen im Verlauf des praktischen Troubleshootings immer mal ein Ausflug auf den SQL Server direkt Sinn macht.

On top of that, I decided to split the training about 50-50 into native SQL techniques and specific handling of SQLSentry. The reason is that in my opinion, a certain knowledge of SQL Server’s internal mechanisms and monitoring possibilities serve, for one, the understanding of why SQLSentry does this or that in such and such a way, and, secondly, an occasional excursion directly to the SQL Server makes sense over the course of a practical troubleshooting. 

Daher werden wir sowohl mit dem Windows-Performance-Monitor, kurz Perfmon, Dynamic Management Views (DMVs), und Extended Events („Erweiterte Ereignisse“) arbeiten, die für Tiefenanalysen das Mittel der Wahl sind, und deren Verwendung hier erlernt wird. Für die Erkennung von Plan-Regression bietet sich natürlich die SQL Server Query Store an.

Mit all diesen Techniken werden wir uns verschiedene Szenarien ansehen:

·       Memory Probleme

·       Identifizieren von Plan Regression

·       Analyse von Indexen & Statistiken

·       Erkennen von I/O Latenzproblemen

·       Untersuchen von Tempdb-Performance

·       Locking & Blocking Analyse

·       Deadlocks

Therefore, we will be working with the Windows Performance Monitor (short: Perfmon), Dynamic Management Views (DMVs), and Extended Events, which are the tools of choice for In-Depth-Analysis, and whose use will be learned here. For the identification of Plan Regression, SQL Server Query Store of course lends itself for this purpose.

With all these techniques we will be looking at different scenarios:

  • Memory problems

  • Identifying Plan Regression

  • Analysis of Indexes & Statistics

  • Identifying I/O Latency problems

  • Analyzing Tempdb Performance

  • Locking & Blocking Analysis

  • Deadlocks

Wer sich noch einen der jetzt schon raren Plätze sichern möchte (innerhalb von 2 Wochen ist das Seminar bereits zu 70% ausgebucht, und dabei ist der Early-Bird-Tarif noch bis 23.5. aktiv), hier nochmal der Link zur Anmeldung und weiteren Infos:

If you would like to secure one of the rare spots (the seminar was already booked 70% within 2 weeks, even though the Early Bird Offer still applies until 23 May), below find once more the link for registration and further information:

 

SQL-Server-Master-Class.com/#PSS

 

bis bald  -- see you soon

Andreas

 

*Insider erkennen die Anleihe für „PSS“, das auch für „Product Support Services“ steht, und dass „PSS Diag“ ein Tool zum Sammeln von Performance-Daten ist, das auch das SQL Server PSS-Team verwendet ;-)

 

PS: Für diesen Blog-Post habe ich keinerlei Vergütung durch irgendeinen Hersteller erhalten ;-)

*Insiders will recognize the innuendo for “PSS,” which also stands for “Product Support Services,” and will also know that “PSS Diag” is a tool for collecting Performance data that is also used by the SQL Server PSS team ;-)

 

P.S.: For this blog post, I have received no remuneration whatsoever by any manufacturer ;-)

Amt als PASS Regionalgruppenvertreter in Köln/Rheinland niedergelegt

Resigned from post as PASS Chapter Leader in Cologne/Rheinland

 

Mit einiger Wehmut darf ich verkünden, dass ich das Amt des Regionalgruppenvertreters (RGV) der PASS Regionalgruppe Rheinland niedergelegt habe. Seit Januar 2011 bin ich RGV gewesen – also für ziemlich genau 6 Jahre

  • Für die Noch-Nicht-PASS’ler die kurze Anmerkung: Die PASS Deutschland (e.V. um genau zu sein) ist ein eingetragener Verein, der mittlerweile als „Microsoft Data Platform Community“ Interessenten und Profis aus dem gesamten Microsoft SQL Server Umfeld adressiert. Das heißt, angefangen bei der Core-Datenbank-Engine über die direkt damit verbundenen Business Intelligence-Komponenten wie Reporting oder Analysis Services hinweg, erstreckt sie sich bis zu Analytischen Bereichen wie Azure Machine Learning und viele andere. Organisiert ist sie in „Regionalgruppen“ („RG“), in verschiedenen Ballungsgebieten, wo face-to-face Treffen stattfinden.

It is with a certain nostalgia that I announce my resignation from my post as (Co-) Chapter Leader of the PASS regional chapter “Rheinland” in Germany (comprising Cologne and Dusseldorf). I had been Chapter Leader since January 2011 – quite exactly for 6 years.

  • A short note to the not-yet-PASS-members: PASS Germany is a registered association which, as a “Microsoft Data Platform Community,” addresses interested parties and professionals from the entire Microsoft SQL Server environment. It ranges from the Core Database Engine to the Business Intelligence components directly involved with it such as Reporting or Analysis Services, up to analytic areas such as Azure Machine Learning, just to name a few. PASS Germany is organized in regional chapters/groups (RG) in various urban areas where face-to-face meetings take place.

 

  PASS de Banner

 

Hintergrund ist in erster Linie, dass ich bereits im Oktober von Düsseldorf nach Frankfurt gezogen bin (News-Seite bei XING), und sich auch nach einer Testphase zeigte, dass es zwar in der Theorie möglich ist, eine Regionalgruppe von der Ferne via Email u.ä. zu unterstützen, aber die 1,5 Stunden Anfahrt, um für einen Abend „vorbeizukommen“, dem Ganzen doch die Motivation (und irgendwo auch den Sinn) nehmen. Ein weiterer Grund findet sich noch im Text versteckt. ;-)

The background to my resignation is, first and foremost, that I moved from Düsseldorf to Frankfurt back in October (see News page at LinkedIn). And after a trial period it became clear that in theory it might be possible to support a regional group from a distance via email and the like, but the 1.5-hour-journey to “stop by” for an evening cuts down on the motivation (and, let’s face it, the purpose). A further reason is hidden in the text below. ;-)

Deswegen hatte ich mich bis Januar entschieden, dieses Amt wirklich niederzulegen. Meine beiden nunmehr ehemaligen RGV-Kollegen, Tillmann Eitelberg und Christoph Muthmann, sind damit auch einverstanden gewesen, und kümmern sich ab jetzt zu zweit um die RG. Es ist nun zwar April geworden, aber das hat lediglich organisatorische Gründe. An dieser Stelle vielen Dank an die langwährende, gute Zusammenarbeit – auch an Olaf Pietsch. (Dessen Posten ich damals übernahm und der mir immer mit Rat zur Seite stand.) Wenn einer nicht konnte, war immer jemand anderes da, der einsprang und diese oder jene Aufgaben abnahm. 

  • Wer mich kennt, weiß, dass mir die Anhäufung von unverdienten Titeln zuwider ist. (Siehe Thema „MCSM Chapter Member“, oder Anhäufungen redundanter Titel vom Stil „MCP + MCSA + MCSE“) Ich habe also auch keine Vorteile aus meinem RGV-sein gezogen, seit ich dieses Amt nicht mehr aktiv ausgeübt habe und deswegen diesen konsequenten Schritt auch gewünscht.

That is why by January I had decided to resign from this post. My two, now former, RGV colleagues, Tillmann Eitelberg and Christoph Muthmann, went along with my decision and will now be taking care of the RG together. In fact, the change took until April, but merely due to organizational reasons. At this point, many thanks to the longtime, good cooperation – also to Olaf Pietsch (whose post I took over at that time, and who was always ready to give advice). Whenever someone couldn’t make it, someone else was there to jump in and take over a task.

  • Those who know me will also know that I am absolutely against accumulating undeserved titles (see Topic „MCSM Chapter Member“, or accumulations of redundant titles à la “MCP + MCSA + MCSE”). So, since stopping to actively exercise this post I definitely have not been profiting from my being Chapter Leader, and that is also why I requested this resolute step.

 

 

 

Im vor-vorherigen Absatz sagte ich „in erster Linie“. Tatsächlich hatte ich bereits vorher den Gedanken, das Amt zugunsten eines „frischen“ Kandidaten aufzugeben. Denn auch wenn ich im ersten Halbjahr 2016 noch 3 Sprecher gewinnen konnte, und 2mal selber einsprang, war mein Gefühl schon länger, dass ein neuer RGV mit frischem Schwung der RG guttun würde. Prinzipiell fände ich es auch weiterhin schön, wenn sich mehr Leute aktiv für die Community einsetzen. Ob nun als RGV oder Sprecher in aller Öffentlichkeit, oder aber auch mehr im Verborgenen, wie das Newsletter-Team, welches fast seit ich dabei bin immer mit Ressourcen-Problemen zu kämpfen hat (ein ausdrückliches Lob an das gesamte Team, vor allem diejenigen, die seit Jahren dabei sind, für ihre Ausdauer) oder auch das Technik-Team, ohne welches keine Email-Verteiler oder Adressen der PASS funktionieren würden.
Leider reichen die Freiwilligen nicht aus, um tatsächlich häufigere Wechsel zu erreichen.

In the pre-previous section, I said “first and foremost.” As a matter of fact, I had previously played with the idea to give up the post in favor of a “fresh” candidate. Even if I managed to win 3 speakers during the first half of 2016, and jumped in twice myself, my guts had long been telling me that a new RGV would benefit the RG and give new impetus. In principle, I think it would be nice if more people actively supported the Community. Whether as an RGV or a speaker in public, or even more backstage, such as the newsletter team – who, almost since I started being involved, has always been struggling with resource problems (here again, kudos to the entire team, especially to those who have been involved for years, for their perseverance) – or also the technical team, without whom no mailing list or addresses of PASS would be working.
Unfortunately, there are not enough volunteers to really achieve more frequent changes.

 

Diese Idee des „Platz Räumens“ hatte sich nach internen Gesprächen dann jedenfalls erstmal zerschlagen, aber der Umzug mischte die Karten neu. 

(Und seit ich nun seit Kurzem im „Club der Väter“ bin (aka: „Grund 2“), habe ich sogar noch mehr Verständnis dafür, dass das für viele nicht in Frage kommt.)
Hier nochmal mein Aufruf von 2015: „Die SQL PASS Deutschland sucht Sprecher – Aufruf an alle SQL Server Fachleute“, der an Aktualität kaum verloren hat.

This idea of “making room” had been dashed then, but the relocation reshuffled the deck.

(And since I recently joined the “baby daddy club” (aka, “reason no. 2”), I understand even more that such a post won’t be considered by many.)
Here, once more my appeal from 2015, which lost none of its relevance: “SQL PASS Germany is looking for speakers – call to all SQL Server professionals.”

 

Thema Sprecher: Hier möchte ich neben den Männern unseres Vorstands (Oliver Engels, Tillmann Eitelberg, Klaus Höltgen, Frank Geisler, Constantin Klein), die es fast ausnahmslos irgendwie noch schaffen, neben den zeitaufwändigen Aufgaben im Vorstand viele Vorträge zu halten, auch gern einige Sprecher hervorheben, die sich in den letzten Jahren immer mehr als „Stammsprecher“ etabliert haben: Uwe Ricken, Torsten Strauß, Gabriele Münster, Ben Weissmann (von „Ur-Stammspielern“ wie Christoph Seck fange ich jetzt nicht erst an zu reden.) – bitte seht mir nach, wenn ich jemanden verdingtes nicht erwähnt habe. Ich behaupte nicht den kompletten Überblick über alle RGs zu haben, schon gar nicht mehr jetzt.

Speaking of speakers: Besides the men of our board (Oliver Engels, Tillmann Eitelberg, Klaus Höltgen, Frank Geisler, Constantin Klein), who almost without exception somehow manage to give many presentations in addition to the time-consuming tasks in the board, I would like to draw attention to some speakers who have increasingly established themselves in the last years as “regular speakers:” Uwe Ricken, Torsten Strauß, Gabriele Münster, Ben Weissmann (and don’t get me started on the “first regular players” like Christoph Seck) – please forgive me if I didn’t mention someone deserving. I do not claim to have a complete overview of all RGs, and even less so now.

 

 

Danke auch an die „Üblichen Verdächtigen“ ;-) von Microsoft: Frank Seiwerth, Patrick Heyde, Ralph Kemperdick, Volker Hinz, …

All diese haben die Regionalgruppe Rheinland auch bereits mit ihrer Zeit und Präsentationsskills beehrt, und dafür bedanke ich mich bei allen zum Abschied.

Thanks also to the “usual suspects” ;-) from Microsoft: Frank Seiwerth, Patrick Heyde, Ralph Kemperdick, Volker Hinz, …

All of them have honored the Rheinland regional group with their time and presentation skills, and I would like to extend my thanks to all on parting.

Verabschiede ich mich damit komplett von der PASS? Mit Sicherheit nicht. Mindestens als Sprecher wird man mich weiterhin sehen. Ja, ehrlich, wenngleich ich zur Häufigkeit nichts versprechen kann (lustigerweise bin ich seit August 2016 öfter in Singapur als in Köln gewesen :-D - auch das im Rahmen der PASS).

Does this mean I am saying goodbye to PASS altogether? Definitely not. You will be seeing me in the future at least as a speaker. Yes, I’m serious – even if I can’t make any promises as to the frequency (funnily enough, since August 2016, I had been in Singapore more often than in Cologne :-D – this, too, for the purposes of PASS).

Ob ich einen anderen Posten in der PASS Deutschland wahrnehme, liegt natürlich nicht allein bei mir. Auch wenn mich das Thema „Social Media“ seit Jahren fuchst. (Vor gut 1,5 Jahren bot ich an, 80% der Zeit dafür zu investieren, Facebook und Xing umzubauen und zu pflegen – leider hatte sich für die anderen 20% (denn auch ich möchte mal Urlaub machen oder krank sein dürfen)) niemand gefunden. Aber vielleicht ist das Thema auch überholt.

Und dann wären noch die PASS Essentials, wo ich prinzipiell auch wieder welche halten würde, nachdem ich ein gutes Jahr eine Pause eingelegt habe und auch bereits des Öfteren nachgefragt wurde. Sie hängen in der Pipeline der PASS, die, das sollte man immer bedenken, bevor man die hin und wieder bemerkenswert langsamen Prozesse bemängeln möchte, Vorstand oder RVG hin oder her, immer neben der Arbeitszeit gemanaged wird.

Schauen wir mal, was die Zukunft bringt. Man sieht sich bestimmt auf der einen oder anderen Veranstaltung.

Whether I will take on a different post in PASS Germany isn’t entirely up to me, of course. Even though the topic “Social Media” has been irking me for years. (About 1.5 years ago, I offered to invest 80% of the time to rebuild and maintain Facebook and Xing – but unfortunately, no one popped up for the remaining 20% (because I, too, will want to take time for vacation or when sick).) But maybe this topic is already outdated.

And lastly, there are still the PASS Essentials (seminars), where I would, in principle, give presentations again after having taken a year-long break and also having been requested many a time. They are pending in the pipeline of PASS, which is always being managed on top of regular working hours, as one should bear in mind before faulting the occasionally amazingly slow processes, with or without board or Chapter Leader.

Let’s see what the future holds in store. We will see each other at some events for sure.

 

 

 

der Andreas

Where is that Preemptive Wait coming from? Database Ownership and Performance: a journey through SQL Server internals with XEvents, Windbg and Wireshark

 

(EN)
In this article I will bring together several techniques for troubleshooting a performance- and security-related “phenomenon” I recently noticed when doing some tests with Natively Compiled Stored Procedures.

(DE)
In diesem Artikel zeige ich einige Techniken zum Troubleshooten eines Performance- und sicherheitsrelevanten „Phänomens“, das mir kürzlich aufgefallen ist, als ich ein paar Tests mit Natively Compiled Stored Procedures durchführte.

Background:

In SQL Server 2014, Natively Compiled Stored Procedures did not support EXECUTE AS CALLER but EXECUTE AS “SpecificUser” was required. This user could be specified with “Username”, “Self” or simply “Owner” – in which case the owner of the procedure usually reverts to the schema owner, which mostly reverts to the Database Owner altogether.

Hintergrund: In SQL Server 2014 unterstützten Natively Compiled Stored Procedures EXECUTE AS CALLER nicht, sondern es war EXECUTE AS “SpecificUser” erforderlich. Dieser Nutzer konnte mit “Username”, “Self” oder einfach “Owner” spezifiziert werden – in dem Fall kehrt der Besitzer der Prozedurnormalerweise zum „schema owner“ zurück, was meistens ganz auf den Database Owner zurückkehrt. 

The phenomenon I encountered was that I noticed some pretty strange long execution times when running a workload consisting of a very basic stored procedure that does nothing more than insert one row of data into a small, unspectacular table.

The insert itself should run in less than a second for 1000 rows, but I could see up to 5 seconds.
The body of the procedure looks like this:

Das Phänomen, dem ich begegnete, war, dass ich einige ziemlich seltsam lange Ausführungszeiten bemerkte, als ich eine Workload laufen ließ, die aus einer sehr einfachen Stored Procedure bestand, die nichts weiter tat, als eine Datenreihe in eine kleine, unspektakuläre Tabelle einzufügen.
Das Insert selbst sollte weniger als eine Sekunde für 1000 Zeilen laufen, doch ich konnte bis zu 5 Sekunden sehen.
Der Inhalt der Prozedur sieht so aus:

 

SET NOCOUNT ON;
SET
XACT_ABORT ON;

INSERT UserSchema.TableName
      
(4 columns, int and char)
VALUES
      
(Parameters);

RETURN 0;

 

The analysis:

Since neither the query plan nor “Show Statistics ON” showed anything unusual, I took a step back and started a top-down-analysis with the Waits and Queues Methodology (which, if you are new in this area, has been a proven methodology for performance analysis for over a decade and is explained for SQL Server probably for the first time in detail here: SQL Server 2005 Performance Tuning using the Waits and Queues)
Using the new session-level waits-DMV in SQL Server 2016 (sys.dm_exec_session_wait_stats) I saw the following distribution of waits:

Die Analyse:

Da weder der Abfrageplan noch “Show Statistics ON“ irgendetwas Ungewöhnliches zeigten, ging ich einen Schritt zurück und begann eine Top-Down-Analyse mit der Waits and Queues Methode (die, wenn ihr in diesem Bereich neu seid, eine seit über einem Jahrzehnt bewährte Methode zur Performance-Analyse ist und für SQL Server wahrscheinlich zum ersten Mal im Detail hier erklärt wird: SQL Server 2005 Performance Tuning using the Waits and Queues)
Bei der Anwendung der neuen Session-Level Waits-DMV im SQL Server 2016 (sys.dm_exec_session_wait_stats) sah ich die folgende Waits-Verteilung: 

 

SELECT dm_exec_session_wait_stats.wait_type
       
, SUM(dm_exec_session_wait_stats.wait_time_ms) - SUM(dm_exec_session_wait_stats.signal_wait_time_ms) AS resource_wait_time_ms
       
, SUM(dm_exec_session_wait_stats.signal_wait_time_ms) AS signal_wait_time_ms
       
, SUM(dm_exec_session_wait_stats.wait_time_ms) AS wait_time_ms
       
, MAX(dm_exec_session_wait_stats.max_wait_time_ms) AS max_wait_time_ms
       
, SUM(dm_exec_session_wait_stats.waiting_tasks_count) AS waiting_tasks_count
FROM sys.dm_exec_session_wait_stats AS dm_exec_session_wait_stats
       
INNER JOIN sys.dm_exec_sessions AS dm_exec_sessions
                ON dm_exec_session_wait_stats.session_id = dm_exec_sessions.session_id
WHERE dm_exec_sessions.program_name ='Sarpedon-WorkoadSimulation-InsertProcs'
GROUP BY dm_exec_session_wait_stats.wait_type
ORDER BY max_wait_time_ms DESC;

 WaitsDMV_withCMEMTHREAD

From this list, Latch-contention, blocking and some waiting for IO is to be expected with a very concurrent workload (50 threads trying to insert on the last page).
The wait-types marked red are the ones that caught my attention.
As Preemptive waits are a quite different beast, and I initially thought maybe there was some authentication issue with the client, I decided to take a look at the CMEMTHREAD.

Von dieser Liste sind Latch-contention, Blocking und einiges Warten auf IO bei einer sehr simultanen Workload zu erwarten (50 Threads, die versuchen, sich auf der letzten Page einzufügen).
Die rot-markierten Wait-Typen sind diejenigen, auf die ich aufmerksam wurde.
Da Preemptive Waits ein spezielles Biest sind, und ich anfangs dachte, dass es vielleicht ein Authentifikationsproblem beim Client gab, entschied ich mich, einen Blick auf den CMEMTHREAD zu werfen.  

The CMEMTHREAD is an indicator that many threads are contending simultaneously for a thread-safe memory object.
Now since we are running a highly concurrent workload, I could just leave it at that, but remember: “Never make quick decisions by confusing symptom with cause”. Keep looking for the real cause. (A good article by Paul Randal on exactly this issue: “Avoiding Knee-Jerk Performance Troubleshooting”)

So, the question is, which memory object is so special here.

Der CMEMTHREAD ist ein Indikator dafür, dass viele Threads gleichzeitig um ein thread-safe Memory-Object konkurrieren.
Nun, da wir eine höchst konkurrierende Workload laufen haben, könnte ich es einfach darauf beruhen lassen, doch denkt dran: „Niemals schnelle Entscheidungen treffen, indem man das Symptom mit der Ursache verwechselt.“ Sucht weiter nach der wahren Ursache. (Hier ein guter Artikel von Paul Randal zu genau diesem Thema: “Avoiding Knee-Jerk Performance Troubleshooting”)

Also ist die Frage, welches Memory-Object hier so besonders ist.  

Time for Extended Events

One of the niftiest features of extended events is, that you can get a full stack dump of just a single thread, using the Action “sqlserver.create_dump_single_thread”. ”. Similarly, using “package0.callstack” you can get a callstack of the last 16 frames.
 You can analyze the outcome with Windbg. – Or, using Trace Flag 3656, you can even query the Extended Event targets directly with XQuery from within Management Studio and the callstack will be materialized, provided you have loaded the correct symbols. (Nothing you should do on a production Server!)
(An example how to do that can be found here: Resolving DTC Related Waits and Tuning Scalability of DTC)

With the dump opened in Windbg the following function calls inside the SQL Server engine can be seen:

Zeit für Extended Events

Eine der raffiniertesten Features von Extended Events ist, dass man einen vollständigen Stack Dump von einem einzelnen Pfad erhalten kann, wenn man die Action “sqlserver.create_dump_single_thread” verwendet.
Auf ähnliche Weise kann man einen Callstack der letzten 16 Frames erhalten, wenn man “package0.callstack” verwendet.
Man kann das Ergebnis mit Windbg analysieren – oder, wenn man Trace Flag 3656 verwendet, kann man sogar die Extended Event Targets direkt mit XQuery aus Management Studio heraus abfragen und der Callstack wird materialisiert. (Nichts, das man auf einem Produktions-Server machen sollte!)

(Ein Beispiel dafür, wie das gemacht werden kann, ist hier: Resolving DTC Related Waits and Tuning Scalability of DTC)

Mit dem in Windbg  geöffneten Dump können die folgenden Funktions-Calls in der SQL Server Engine gesehen werden:

 Callstack_Windbg_CMEMTHREAD_GetNtGroupsViaAuthZ

 

The Stack dump rings a bell. Right before allocating the memory (CMemThread<CMemObj>::Alloc (red), several functions with very familiar names were called (orange):

Bei dem Stack Dump läuten doch einige Glocken. Kurz vor dem Zuteilen des Memory (CMemThread<CMemObj>::Alloc (rot) wurden mehrere Funktionen mit sehr bekannt klingenden Namen abgerufen (orange):

sqllang!CWindowsSecurityPrimaryInfo::GetNtGroupsViaAuthZ
sqllang!CreateLoginToken
sqllang!CreateLoginTokenForImpersonation

And those in turn must have been caused by the sqllang!CAutoExecuteAsContext::Set, sqllang!CMsqlExecContext::FExecute and so on (green).
At this point I pretty much knew where to look. But just to show you an example of how this can be done without even touching Windbg, here is an (accumulated and commented) result from the Extended Event callstack-Action:

Und diese wiederum müssen von sqllang!CAutoExecuteAsContext::Set, sqllang!CMsqlExecContext::FExecute verursacht worden sein, und so weiter (grün).
In diesem Moment wusste ich im Prinzip schon, wo ich suchen musste. Aber um euch ein Beispiel zu zeigen, wie man das auch machen kann, ganz ohne Windbg anzurühren, ist hier ein (gesammeltes und kommentiertes) Ergebnis der Extended Event Callstack-Action:  

 

Callstack_XEvent_PREEMPTIVE_OS_LOOKUPACCOUNTSID_edited_2ndstack 

 

This callstack results from the PREEMPTIVE_OS_LOOKUPACCOUNTSID Wait-Type, which I noticed would happen exactly once per procedure call. When analyzing different callstacks together I could draw the conclusion that the following function calls lead to the respective Wait-Types:

Dieser Callstack resultiert vom PREEMPTIVE_OS_LOOKUPACCOUNTSID Wait-Type, was, wie ich bemerkte, genau einmal pro Procedure Call geschehen würde. Beim Analysieren verschiedener Callstacks zusammen konnte ich die Schlussfolgerung ziehen, dass die folgenden Funktions-Calls zu den jeweiligen Wait-Types führen:

sqllang.dll!LookupAccountNameInternal -> PREEMPTIVE_OS_LOOKUPACCOUNTSID
sqllang.dll!CWindowsSecurityPrimaryInfo::GetNtGroupsViaAuthZ -> PREEMPTIVE_OS_AUTHZINITIALIZERESOURCEMANAGER
sqllang.dll!CWindowsSecurityPrimaryInfo::Init -> PREEMPTIVE_OS_AUTHORIZATIONOPS

The Preemptive Waits read from the Extended Events file-target can be ordered in their occurrence (from top to bottom), leading to the following picture:

Die Preemptive Waits, aus dem Extended Events Datei-Ziel gelesen, können nach ihrem Auftreten sortiert werden (von oben nach unten), was folgendes Bild ergibt:

 

WaitsPreemptive_XEvents_inOrder

The here unreadable callstack for the call to AUTHORIZATIONOPS (undocumented) on the bottom.

Der hier unlesbare Callstack für den Call AUTHORIZATIONOPS (undokumentiert) unten. 

 

First outcome:

From those calls one can deduct that not the client is authenticating at SQL Server, but actually the procedure call itself causes Windows API calls (LOOKUPACCOUNTSID, AUTHZINITIALIZERESOURCEMANAGER) for authentication purposes.
Now at the very latest it’s time to check the ownership-chain for the stored procedure.
So I checked the header of the proc, and indeed, just as I expected it contained a “WITH EXECUTE AS OWNER”.
That alone can’t be it, so the question is, who is the owner. I already suspected it and there it was: The database was owned by a LOCAL Windows account.
Now, that is rare, but it all makes sense now: For every execution of the procedure, the ownership had to be verified – and since it is a Windows-Account, it had to go out of SQL Server OS, using a Preemptive call to Windows, wait, and continue only after Windows returns control of this thread back to SQL Server.

Erstes Ergebnis:

Aus diesen Call lässt sich ableiten, dass es nicht der Client ist, der sich bei SQL Server authentifiziert, sondern dass es tatsächlich der Procedure Call selbst ist, der Windows API Calls (LOOKUPACCOUNTSID, AUTHZINITIALIZERESOURCEMANAGER) für Authentifizierungszwecke verursacht.
Spätestens jetzt ist es an der Zeit, die Besitzerkette für die Stored Procedure zu überprüfen. Also habe ich den Kopf der Prozedur geprüft, und tatsächlich, genau wie ich erwartet hatte, enthielt es ein “WITH EXECUTE AS OWNER”.
Das allein kann es nicht sein, also stellt sich die Frage, wer der Owner ist. Ich vermutete es bereits, und da war es: Die Datenbank gehörte zu einem LOKALEN Windows-Konto.
Nun, das ist eher selten, doch jetzt ergibt alles Sinn: Für jede Ausführung der Prozedur musste der Besitz verifiziert werden – und da es ein Windows-Konto ist, musste es raus aus SQL Server OS gehen, indem ein Preemptive Call an Windows verwendet wird, dann warten, und erst dann weitermachen, nachdem Windows die Kontrolle dieses Pfades an SQL Server zurückgegeben hatte.

 

Testing the improvement options:

Now, obviously, I did not stop here but rather made some more tests. Based on the fact that there are 3 possible types of owner for objects within SQL Server, I compared the execution times (and waits) between those 3 possible
Database owner-types:

1.       SQL Account

2.       Windows DomainAccount

3.       Local Windows Account

- I did also test with Admin vs. non-Admin and NTLM vs. Kerberos but saw no difference.

Testen der Verbesserungsmöglichkeiten:

Natürlich hörte ich nicht hier auf, sondern machte noch weitere Tests. Ausgehend von der Tatsache, dass es mögliche Typen von Owner für Objekte innerhalb SQL Server gibt, verglich ich die Ausführungszeiten (und Wartezeiten) zwischen diesen 3 möglichen Datenbank-Owner-Types:

  1. SQL Account
  2. Windows DomainAccount
  3. Local Windows Account

- Ich testete auch mit Admin vs. non-Admin und NTLM vs. Kerberos, stellte jedoch keinen Unterschied fest. 

So here is the result of the Performance-Comparison with different Database-/Procedure-Owners:

Hier ist also das Ergebnis des Performance-Vergleichs mit unterschiedlichen Datenbank-/Procedure-Owners:

 

 ProcedureStats_by_DBOwner

 

Interpretation:

1)      The obvious: Using a local Windows Account results in a huge performance-penalty for such a simple INSERT-statement

2)      Using a Domain Account I could notice that every 10 minutes the next execution would be a bit slower.

Interpretation:

  1. Das Offensichtliche: Die Verwendung eines lokalen Windows-Kontos führt zu eine riesigen Performance-Impakt für ein solch simples INSERT-Statement

  2. Beim Verwenden eines Domain-Kontos konnte ich sehen, dass die nächste Ausführung alle 10 Minuten etwas langsamer war. 

Further analysis

When checking the Wait-stats again, I could see that usually the Windows-Domain-Account had the following simple waits:

Weitere Analyse

Beim erneuten Überprüfen der Warte-Statistiken konnte ich feststellen, dass der Windows-Domain-Account meistens die folgenden einfachen Waits hatte: 

 

WaitsDMV_OwnerDomainAccount

 

Pretty ok and nothing to worry about. But the first call after 10 minutes would always result in the same wait-types as I observed for the local Windows Account, except that the wait-times are much much lower. (You can compare the below picture with the one from the beginning of the article.)

Ziemlich in Ordnung und nichts, worüber man sich Sorgen machen müsste. Doch der erste Call nach 10 Minuten ergab immer dieselben Wait-Typen, die ich für das lokale Windows-Konto beobachtete, außer dass die Wartezeiten um Vieles geringer sind. (Ihr könnt das Bild unten mit dem am Anfang des Artikels vergleichen.)

 

 WaitsDMV_OwnerDomainAccount

 

Behind the Scenes: Network Tracing

To explain the difference, I ran a Network Trace using Wireshark
And exactly every 10 minutes I saw some additional KERBEROS-traffic going to the Domain Controller. Below you see the opened data frame with the Request for a Ticket Granting Service Ticket (TGS-REQ).

Hinter den Kulissen: Network Tracing

Um den Unterschied zu erklären, führte ich ein Network Trace mit Wireshark aus.
Und genau alle 10 Minuten sah ich einigen zusätzlichen KERBEROS-Traffic zum Domain Controller fließen. Unten seht ihr den geöffneten Datenrahmen mit dem Request for a Ticket Granting Service Ticket (TGS-REQ).

 

 WireShark_TGS-REQ

 

Background infos:

As the User, on whose behalf the service requests the service ticket, is identified using the user name and user realm/domain (SQL\SQLDBOwner in my case), the padata type PA-FOR-USER is used, as you can see in the screenshot. You can even see the Checksum added for protection.

The S4U2self extension of the PA-DATA structure allows a service to obtain a service ticket to itself on behalf of a user. The user is identified to the KDC using the user's name and realm.

Hintergrundinformationen:

Wenn der Nutzer, für den der Service das Service-Ticket anfordert, unter Verwendung des Nutzernamens und user realm/Domäne (SQL\SQLDBOwner in meinem Fall) identifiziert wird, wird der Padata Type PA-FOR-USER verwendet, wie im Screenshot zu sehen. Man kann sogar die Checksum sehen, die zum Schutz hinzugefügt wurde.

Die S4U2self Extension der PA-DATA-Struktur erlaubt einem Service, ein Service-Ticket im Auftrag eines Nutzers für sich selbst zu beziehen. Der Nutzer wird gegenüber dem KCD identifiziert, unter Verwendung des Nutzernamen und Realm. 

Luckily the DC answers right away with a TGS-REP, containing the PA-DATA-structure with ticket for the service that was named in the TGS-REQ from above:

Zum Glück antwortet der DC sofort mit einem TGS-REP, der die PA-DATA-Struktur mit einem Ticket für den oben im TGS-REQ genannten Service enthält:

 

 WireShark_TGS-REP

 

There is plenty literature available if you want to learn more about the Kerberos Protocol-Elements. Here is a documentation from Microsoft:

Es gibt eine Menge an Literatur, falls ihr mehr über die Kerberos-Protokollelemente erfahren wollt. Hier ist eine Dokumentation von Microsoft:

The 10-minutes puzzle:

1) After doing some extensive testing, I conclude that the 10-minute interval after which a new Ticket Granting Service Ticket-Request is initiated must be a SQL Server specific enhancement for Domain Accounts to avoid making this round trip for every SID-validation. The 10 minutes are consistent and independent from other workload influencers. The cause behind is not documented.

2) The much faster validation for the AD-Account is very fast thanks to some caching in Windows. (Thank you, Jack Richins from formerly SQL Security Team, for reminding me of this)

3) For the local Windows Account, there is no such performance improvement via caching which results in much slower response times.

Das 10-Minuten-Puzzle:

  1. Nach ausgiebigem Testen schließe ich, dass das 10-Minuten-Intervall, nach dem ein neuer Ticket Granting Service Ticket Request eingeleitet wird, eine SQL-Server-spezifische Erweiterung für Domain-Accounts sein muss, um diese Rundreise nicht für jede SID-Validierung machen zu müssen. Die 10 Minuten sind konsistent und unabhängig von anderen Workload-Beeinflussern. Die Ursache dahinter ist nicht dokumentiert.

  2. Die viel schnellere Validierung für das AD-Konto ist so schnell dank einigem Caching in Windows. (Danke, Jack Richins vom ehemaligen SQL Security Team, der mich daran erinnert hat)

  3. Für das lokale Windows-Konto gibt es keine solche Performance-Verbesserung via Caching, was zu viel längeren Antwortzeiten führt.

 

Final results and learnings:

1)      Using local users for SQL Server can create noticeable impact for short transactions. Yet another reason to stay away from local accounts.

2)      For the SQL Account, naturally no Windows calls are necessary at all, but the performance-advantage compared to the AD-Account is marginal, even for high-speed scenarios.

3)      Network latency matters even between SQL Server and DC. Not just for the initial Login-phase but even for ongoing validations from within SQL-statements.

4)      I can stick to my recommendation for Database Ownerships (SQL Server Database Ownership: survey results & recommendations) :-)

Endergebnis und Gelerntes:

  1. Die Verwendung von lokalen Nutzern für SQL Server kann deutliche Auswirkungen für kurze Transaktionen verursachen. Noch ein weiterer Grund dafür, sich von lokalen Konten fernzuhalten.

  2. Für den SQL Account sind natürlich keine Windows-Calls notwendig, doch der Performance-Vorteil gegenüber dem AD-Account ist geringfügig, selbst für High-Speed-Scenarien.

  3. Netzwerk-Latenz spielt selbst zwischen SQL Server und DC eine Rolle. Nicht nur für die anfängliche Login-Phase, sondern sogar für fortlaufende Validierungen innerhalb von SQL-Statements.

  4. Ich kann meine Empfehlung für Datenbank-Ownerships aufrechterhalten (SQL Server Database Ownership: survey results & recommendations) :-)

I hope you found this an interesting read.

Ich hoffe, dies war eine interessante Lektüre für euch. 

 

Andreas

 

PS: for the geeks among you:

The Stack Dump in Text format together with some comments:

P.S. Für die Geeks unter euch:

Der Stack Dump im Textformat mitsamt einigen Kommentaren:

 

Child-SP          RetAddr           Call Site

000000e9`2f0b79d8 00007ffe`f9e51118 ntdll!NtWaitForSingleObject+0xa

-> this function is actually deprecated (Hello, Microsoft?)

000000e9`2f0b79e0 00007ff7`04999fef KERNELBASE!WaitForSingleObjectEx+0x94
000000e9`2f0b7a80 00007ff7`04999d7d sqlservr!CDmpDump::DumpInternal+0x22f
000000e9`2f0b7b20 00007ff7`049a15b8 sqlservr!CDmpDump::DumpFilter+0xcd
000000e9`2f0b7c10 00007ffe`ef0ef2cb sqlservr!memset+0x1819
000000e9`2f0b7c40 00007ffe`fc98398d msvcr120!__C_specific_handler+0x93 [f:\dd\vctools\crt\crtw32\misc\amd64\chandler.c @ 162]
000000e9`2f0b7cb0 00007ffe`fc9493a7 ntdll!RtlpExecuteHandlerForException+0xd
000000e9`2f0b7ce0 00007ffe`fc948fbd ntdll!RtlDispatchException+0x197
000000e9`2f0b83b0 00007ffe`f9e58b9c ntdll!RtlRaiseException+0x18d
000000e9`2f0b8b70 00007ff7`04999c9c KERNELBASE!RaiseException+0x68
000000e9`2f0b8c50 00007ffe`f05602c6 sqlservr!CDmpDump::Dump+0x4c
000000e9`2f0b8c90 00007ffe`f105c411 sqllang!SQLDumperLibraryInvoke+0x1f6
000000e9`2f0b8cd0 00007ffe`f105ce94 sqllang!SQLLangDumperLibraryInvoke+0x161
000000e9`2f0b8d80 00007ffe`f102cd0b sqllang!CImageHelper::DoMiniDump+0x475
000000e9`2f0b8f90 00007ffe`f072e9c4 sqllang!stackTrace+0x9db
000000e9`2f0ba9b0 00007ffe`f072f6ae sqllang!XeSqlPkg::IsSystem+0x174
000000e9`2f0bab90 00007ffe`ef2e779a sqllang!XeSqlPkg::CreateDumpSingleThreadActionInvoke+0x1e

-> you can clearly see how this stack dump was created: XEvents

000000e9`2f0babc0 00007ffe`ef2a1b8e sqldk!XeSosPkg::wait_info_external::Publish+0x1a9

-> Now we will see our wait-type when we ask the DMVs or XEvents

000000e9`2f0bac20 00007ffe`ef2a63a4 sqldk!SOS_Scheduler::UpdateWaitTimeStats+0x596
000000e9`2f0bb530 00007ffe`f0d94fac sqldk!SOS_Task::PopWait+0xba
000000e9`2f0bb590 00007ffe`f0d9481e sqllang!CWindowsSecurityPrimaryInfo::GetNtGroupsViaAuthZ+0x75c

-> this will lead to the Preemptive Wait: PREEMPTIVE_OS_AUTHZINITIALIZERESOURCEMANAGER

000000e9`2f0bb890 00007ffe`f0d956ed sqllang!CWindowsSecurityPrimaryInfo::Init+0x2ce
000000e9`2f0bba00 00007ffe`f041a88b sqllang!GetWindowsSecurityPrimaryInfo+0xbe
000000e9`2f0bba60 00007ffe`f041cadb sqllang!CreateLoginToken+0x2d7
000000e9`2f0bbc50 00007ffe`f041dca8 sqllang!CreateLoginTokenForImpersonation+0xcb2

-> an Impersonation is happening (EXECUTE AS)

000000e9`2f0bc400 00007ffe`f0358342 sqllang!CAutoExecuteAsContext::Set+0xe2d
000000e9`2f0bc680 00007ffe`f001245e sqllang!CSECExecAsRuntimeServices::_Set+0x424
000000e9`2f0bc900 00007ffe`f0012041 sqllang!CMsqlExecContext::FExecute+0x336
000000e9`2f0bcc30 00007ffe`f0d1d83d sqllang!CSQLSource::Execute+0x983
000000e9`2f0bcdd0 00007ffe`f0d1d241 sqllang!CStmtExecProc::XretLocalExec+0x26e
000000e9`2f0bce50 00007ffe`f0d19f98 sqllang!CStmtExecProc::XretExecExecute+0x481
000000e9`2f0bd600 00007ffe`f00119ca sqllang!CXStmtExecProc::XretExecute+0x38
000000e9`2f0bd640 00007ffe`f0012933 sqllang!CMsqlExecContext::ExecuteStmts<1,1>+0x40d
000000e9`2f0bd780 00007ffe`f0012041 sqllang!CMsqlExecContext::FExecute+0xa9e
000000e9`2f0bdab0 00007ffe`f0cd3f6d sqllang!CSQLSource::Execute+0x983
000000e9`2f0bdc50 00007ffe`f0ce0e6c sqllang!ExecuteSql+0x93d
000000e9`2f0be7d0 00007ffe`f0ce1549 sqllang!CSpecProc::ExecuteSpecial+0x15c
000000e9`2f0be8d0 00007ffe`f001a82b sqllang!CSpecProc::Execute+0x299
000000e9`2f0bea00 00007ffe`f0021542 sqllang!process_request+0xe61
000000e9`2f0befd0 00007ffe`f00210a3 sqllang!process_commands_internal+0x2df
000000e9`2f0bf050 00007ffe`ef2a5bfd sqllang!process_messages+0x253
000000e9`2f0bf260 00007ffe`ef2a58f5 sqldk!SOS_Task::Param::Execute+0x231
000000e9`2f0bf860 00007ffe`ef2a554d sqldk!SOS_Scheduler::RunTask+0xaa
000000e9`2f0bf8d0 00007ffe`ef2cd7c8 sqldk!SOS_Scheduler::ProcessTasks+0x3cd
000000e9`2f0bf9b0 00007ffe`ef2cdb10 sqldk!SchedulerManager::WorkerEntryPoint+0x2a1
000000e9`2f0bfa80 00007ffe`ef2cdcd7 sqldk!SystemThread::RunWorker+0x8f
000000e9`2f0bfab0 00007ffe`ef2cd9f8 sqldk!SystemThreadDispatcher::ProcessWorker+0x2de
000000e9`2f0bfb60 00007ffe`fc6e13d2 sqldk!SchedulerManager::ThreadEntryPoint+0x1d8
000000e9`2f0bfc10 00007ffe`fc9603c4 kernel32!BaseThreadInitThunk+0x22
000000e9`2f0bfc40 00000000`00000000 ntdll!RtlUserThreadStart+0x34

EOF

SQL Server 2016 SP1 removes the editions’ programming feature limits! Everything from Always Encrypted to XTP/In-memory for everybody!

SQL Server 2016 SP1 entfernt Programmier-Feature-Limits der Editionen! Alles von Always Encrypted bis XTP: In-Memory für Alle!

Unglaubliche Neuigkeiten, anders kann man es gar nicht sagen:

Mit dem heute erschienenen Service Pack 1 für SQL Server 2016, macht Microsoft den programmiertechnischen Unterschieden zwischen den Editionen der relationalen Datenbankengine (LocalDB, Express, Standard, Web, Enterprise) ein Ende!

Ab heute kann JEDER, der bereits auf SQL Server 2016 arbeitet, In-Memory optimierte Tabellen erstellen, Tabellen partitionieren, Columnstore Indexe verwenden, etc. etc.

Und wenn das nicht reichen würde, bringt das SP1 auch für sich genommen viele weitere wertvolle neue Features wie „Database Clones“, „CREATE OR ALTER“-Syntax, viele neue Diagnose-Verbesserungen (Showplan, XEvents, DMVs, Errorlog), NUMA-Awareness für Analysis Services und weiteres (mehr Infos im offiziellen Announcement von Microsoft hier).

Wow, einfach wow… die Möglichkeiten, die dies für Kunden eröffnet sind unglaublich. Vorbei die Zeiten zwingend darauf aufzupassen, keine Enterprise Features wie Compression oder Datenbank-Level-Auditing auf Standard-Editionen zu deployen.
Endlich die Möglichkeit, auch kleine Systeme, die dennoch enorm Latenz-kritisch sind, mit In-Memory Objekten zu beschleunigen (Assembly-Line/Fließbandfertigungs-Szenarien).

Die In-Memory Revolution ist nun für alle da!

Bevor ihr fragt, was dann überhaupt noch die Editionsunterschiede sind:

Was bleibt und bleiben wird, ist, dass die größeren Editionen einfach mehr Hardware unterstützen. Die Limits von 16 Cores und 128 GB RAM für die Standard Edition und noch weniger für Express bleiben bestehen. Das ist und bleibt entscheidend.

Aber definitiv muss ich mir einen neuen Spruch ausdenken: Früher pflegte ich immer zu sagen: „Um zu entscheiden, ob ein Feature Enterprise ist, reicht, zu wissen, ob es ‘cool‘ (z.B. Database Snapshot) oder ‘schnell‘ (z.B. Columnstore) ist.“

These are just sublime news, there is no other way to put it:

With the Service Pack 1 for SQL Server 2016 released today, Microsoft puts an end to the differences in the relational database Engine in terms of programmability features between the editions (LocalDB, Express, Standard, Web, Enterprise)!

As of today, EVERYONE who is already working on SQL Server 2016 can create In-Memory optimized tables, partitioned tables, use Columnstore Indexes and so forth.

And as if that weren’t enough, the SP1 itself also includes many more valuable features such as “Database Clones,” “CREATE OR ALTER”-syntax, many new diagnosis improvements (Showplan, XEvents, DMVs, Errorlog), NUMA-Awareness for Analysis Services and more (read more in the official announcement of Microsoft here).

Wow, just wow… the possibilities thus offered to customers are unbelievable. Gone are the days when you had to make sure not to deploy any Enterprise features such as Compression or Database level auditing on Standard Editions.
Finally, there is the option to accelerate even small systems, which are still extremely latency-critical, with memory objects (assembly-line scenarios). 

The In-Memory Revolution is now available to everybody!

Before you ask how, then, the editions will differ:

What will remain in place is that the larger editions simply support more hardware. The limits of 16 Cores and 128 GB RAM for the standard edition and even less for Express will remain the same. That is and remains key.

But I definitely need to think of a new line: In the past, I always used to say: “In order to decide whether a feature is Enterprise it suffices to know if it’s ‘cool’ (e.g. Database Snapshot) or ‘quick’ (e.g. Columnstore).” 

 

Ab heute gilt: die Größe macht den Unterschied.

Bevor mich jemand falsch zitiert: es gibt durchaus noch Features, die der Enterprise-Edition vorbehalten bleiben. Die Betonung bei der Gleichziehung liegt auf Programmier-Features. Reine HA-Features wie z.B. multiple Secondaries, bestimmte Sicherheitsfeatures wie TDE oder Engine-interne Performance Optimierungen wie „Advanced Read-Ahead“, Star Join-Optimierung usw. bleiben der Enterprise Edition vorbehalten. Manches bleibt auch technisch beschränkt. So hat man für Change Data Capture unter der Express-Edition ja keinen SQL Agent.
Und natürlich macht ein Columnstore Index eh kaum Sinn, wenn eine Tabelle nicht mal 1 Million Zeilen enthält…

Aber das sollte die Freue nicht schmälern.

Und hier geht es zum Download des Microsoft® SQL Server® 2016 Service Pack 1 (SP1):

As of today, the following applies: it is the size that makes the difference.

But before someone gets me wrong: There are definitely still features that remain exclusive to the Enterprise edition. The emphasis on the getting equal is on the programming features. Mere HA features such as multiple secondaries, and certain security features such as TDE or engine-internal performance optimizations like “Advanced Read-Ahead”, Star Join-Optimization etc. remain exclusive to the Enterprise edition. Some of it also remains limited in technical terms. For Change Data Capture, for example, you do not have an SQL Agent in the Express edition.
And of course, a Columnstore Index hardly makes sense if a table does not even contain 1 million rows.

But that shouldn’t cut down on the joy.

Here, you can download the Microsoft® SQL Server® 2016 Service Pack 1 (SP1):

 www.microsoft.com/en-us/download/details.aspx?id=54276

Und hier noch ein paar weitere Links zu den Neuerungen mit dem Service Pack 1:

And here some more links about the changes with Service Pack 1:

 What’s new in SQL Server 2016 SP1 for Reporting Services

SQL Server 2016 SP1 editions

Microsoft Changes Feature Support Between Editions in SQL Server 2016 Service Pack 1 (Article by my good fellow Victor Isakov, MCM and MCA from Australia with nice background details)

Viel Spaß mit dem SP1 und beim Ausprobieren der neu verfügbaren Features.

Und wenn Sie jetzt meinen, dass Sie nicht nur lesen wollen, sondern sich tiefergehendes Wissen aneignen oder endlich auf die aktuelle SQL Server Version upgraden wollen, helfen wir von Sarpedon Quality Lab® Ihnen gerne.

Have fun with the SP1 and trying the newly available features.

And if you now feel like reading isn’t enough but you would like to acquire in-depth knowledge or finally upgrade to the current SQL Server Version, you are in good hands with Sarpedon Quality Lab®.

Andreas Wolter

What makes a successful Tech Conference? // Was macht eine erfolgreiche technische Konferenz aus?

(EN)

After my Asia-tour this summer I feel it is about time for this article.
At the time of this article (09-2016) I have presented at more than 50 technical conferences around the world (Europe, Middle East, Asia, North America), from small with about 150 attendees to huge with around 5000 attendees. With that came a lot of good contact with many of the organizers.

Recently again I have been asked by a good friend and organizer how I felt about their conference (remember, a conference is never run by a single person) and what could be improved.
Even though I did give an answer, I realize there is more to it and I promised to think about it a bit more. I decided to put this into an article and maybe some other organizers and attendees find it interesting.

Note: this article is based on the experience of my own and unlike a technical article there will hardly be one version of the truth.

So, what makes a conference successful?

(DE)

Nach meiner Asien-Tour in diesem Sommer ist nun dieser Artikel an der Reihe.
Zum Zeitpunkt dieses Artikels (09-2016) habe ich auf über 50 technischen Konferenzen weltweit (Europa, Naher Osten, Asien, Nordamerika) präsentiert. Von kleinen Konferenzen mit etwa 150 Teilnehmern bis zu großen Konferenzen mit um die 5000 Teilnehmern. Dabei entstanden viele gute Kontakte mit vielen der Organisatoren.

Erst vor kurzem wurde ich wieder von einem guten Freund und Organisator gefragt, was ich von ihrer Konferenz hielte (eine Konferenz wird ja nie von einer einzelnen Person durchgeführt) und was noch verbessert werden könnte.
Obwohl ich eine Antwort gab, ist mir klar, dass da mehr dahintersteckt, und ich versprach, noch ein bisschen weiter darüber nachzudenken. So entschied ich mich, einen Artikel daraus zu machen, und vielleicht ist er auch für einige andere Organisatoren und Teilnehmer interessant.

Hinweis: dieser Artikel beruht auf meiner eigenen Erfahrung und im Gegensatz zu einem technischen Artikel, wird es kaum eine Version der Wahrheit geben.

Was macht also eine erfolgreiche Konferenz aus?

 Successful_Tech_Conferences_PASS_Summit_2013_Exhibition

Exhibition at PASS Summit USA 2013

“It is big”

Probably the most common answer will be:

1)

It is big”, or even “the biggest” – both in terms of number of attendees and offered parallel sessions, tracks and topics.

A good example would be the PASS Summit in the US: the biggest SQL Server conference worldwide. But of course there are even much bigger events outside of the pure SQL Server world…

Die wahrscheinlich gängigste Antwort wird sein:

1)

Sie ist groß“ oder gar „die größte“ Konferenz – sowohl von der Zahl der Teilnehmer her als auch von den angebotenen Sessions, Tracks und Themen.

Ein gutes Beispiel wäre der PASS Summit in den USA: die weltweit größte SQL-Server-Konferenz. Aber außerhalb der reinen SQL-Server-Welt gibt es natürlich noch viel größere Events…

 Successful_Tech_Conferences_PASS_Summit_2013_Party

Attendees Party at PASS Summit 2013 in Charlotte NASCAR Hall of Fame

“it has more attendees than last year.”

2)

Almost no conference starts “big”, let alone the “biggest”, so in the beginning, when establishing a conference, it will often be: “it has more attendees than last year.” - This is the first and most obvious sign of a successful progression.
- side note: can a progression be positive without an increase of attendees?
– Yes it can:
For example the same number of attendees can be a different mixture in terms of job-background which may fit better to the topic of the conference and hence will be happier than last year’s attendees and hopefully spread the word for the follow-up conference which then finally will have more attendees.

2)

Fast keine Konferenz fängt “groß” an, geschweige denn als „die größte“, so dass es am Anfang, wenn eine Konferenz gerade etabliert wird, oft heißen wird: „es gibt mehr Teilnehmer als letztes Jahr.“ – Das ist das erste und offensichtlichste Zeichen einer erfolgreichen Entwicklung.
- Nebenbemerkung: kann eine Entwicklung positiv sein ohne einen Anstieg an Teilnehmern? – Ja, kann sie:
Zum Beispiel kann die gleiche Zahl an Teilnehmern hinsichtlich Job-Hintergrund anders zusammengesetzt sein und vielleicht besser zum Thema der Konferenz passen und damit auch zufriedener als die Teilnehmer vom Vorjahr sein, und die Konferenz hoffentlich weiterempfehlen, so dass die nächste Konferenz schließlich noch mehr Teilnehmer hat.

 Successful_Tech_Conferences_SQLKonferenz2014.

Thomas La Rock, the PASS President at that time and Oliver Engels, PASS Chapter Leader at that time of German PASS at SQL Konferenz 2014 – the 10th anniversary of PASS Germany

"Your sponsors are your partners."

Also, do not forget the sponsors who are highly dependent on the right mix of people – and not the pure numbers.

Having the right sponsors (by making them happy) will give you more flexibility in the whole setup from location, catering, speaker-invites and “goodies”. If you are reading this in preparation of a conference, bear this in mind.

Your sponsors are your partners.

Auch darf man nicht die Sponsoren vergessen, welche stark von der richtigen Mischung an Leuten abhängig sind – und nicht von den reinen Zahlen.

Die richtigen Sponsoren zu haben (indem man sie glücklich macht) gibt einem mehr Flexibilität beim ganzen Aufbau, von der Location über Catering, Sprecher-Einladungen bis hin zu „Goodies“. Wenn ihr gerade bei der Vorbereitung einer Konferenz seid, während ihr dies lest, behaltet das im Auge.

Eure Sponsoren sind Eure Partner.

 Successful_Tech_Conferences_SQLKonferenz2016_SarpedonQualityLab

Sarpedon Quality Lab® Sponsor booth at SQL Konferenz 2016

“community conferences are often very happy with a break even.”

3)

It can also be: “it generates a good profit.
Actually very often it will be: “it does generate profit.” – Rather than a loss. And this happens more often than you may think.

Why would a conference make a loss and still be repeated you would ask yourself?

In fact community conferences are often very happy with a break even as the main interest is to just serve the community and not the profit.

For commercial conferences the reasons may be a bit different.

That brings me to the other options:

3)

Es kann auch heißen: “Sie wirft einen guten Gewinn ab. Oftmals wird es tatsächlich heißen: „Sie erzielt Gewinn.“ – Mehr als einen Verlust. Und das passiert häufiger als man meinen mag.

Warum würde eine Konferenz Verluste machen und trotzdem wiederholt werden, könnte man sich fragen?

Tatsächlich sind Community Konferenzen oft sehr zufrieden mit einer runden Null, da das Hauptinteresse der Community und nicht dem Profit gilt.

Bei kommerziellen Konferenzen mögen die Gründe etwas anders sein.

Das führt mich zu den anderen Optionen:

 Successful_Tech_Conferences_PASS_Summit2014_MCMs

The MCMs at the PASS Summit 2014

“famousness leads to more publicity

4)

The conference may not create profit, but, simply put “famousness”. Famousness that leads to more publicity. And this alone can be worth the effort for both a commercial as well as a non-profit driven conference.

What kind of fame could that be other than being “the greatest”?

A conference can be known for:

  • The best party” – take undefeated SQLBits in the UK with its ever changing theme-parties.
  • The cool(est) location
    If the host-city is already famous, it helps a lot – if you pick a location that is somewhat typical or representative for the city.
    Some examples would be: SQL Saturday Cambridge, SQL Saturday Malaysia/Kuala Lumpur – in the famous Petronas towers, SQL Saturday Singapore – overlooking the famous Marina Bay and many others.
    Oh, and SQLBits again changes the host-city every year, making it a principle to show the variety of the country to its attendees and speakers.
  • The most famous speakers
    - here the simple rule is (usually): the bigger the conference, the more attracting to world-renowned speakers. Commercially-driven conferences can gain an advantage over other similarly sized ones here though, as they can provide a fee for speakers.
    If you are unsure start by looking for speakers that have been awarded MVP (usually a sign of a lot of interaction with public, which is exactly what a conference is about) and MCM or MCSM certified professionals (a good indicator of practical experience).
  • Big(gest) choice of sessions
    - the greater the audience you want to attract, the broader the range of topics should be. And nowadays everything is somewhat connected anyways, so even an administrator can be interested in certain BI or even Data Science topics.
    Besides topics also the level of the sessions is important for a bigger audience – from beginner level to advanced level.
  • Cool prices and goodies
    - At most conferences attendees have a chance to collect some goodies or even win high-valued prices.
    I personally have never consciously seen this being advertised specifically though. To what extent this influences attendees to come back I have no clue.
  • This one is more speaker-centric: a conference can be known among speakers for “being a great host” – by providing a special program for speakers. For example SQLSaturday Portugal (the first SQL Saturday outside US btw), is known for a superb crew of volunteers that even gave us a special tour to some famous locations around Lisbon – “private sightseeing tour”. At SQL Gulf we were invited to a traditional Saudi Arabian Dinner – before the self-made “sightseeing-tour”. Others bring you to traditional restaurants and so on and so on. In this area one can be very creative. But locality certainly does help.
  • Having programmers and even managers from Microsoft/another vendor at location.” This slightly clumsy point is referring to the extra value that a conference can provide, when the actual programmers, program managers etc. from the targeted software are right at the conference. For most attendees this is the only opportunity to ever meet the people behind the product.
    The PASS Summit in the US is known for that. The close proximity to Redmond makes it possible. For other conferences it is much harder, but still quite a few times you can see some famous people coming from the headquarters. While size of the conference helps, having a strong connection with Microsoft definitely does help a lot if you are an organizer.

4)

Die Konferenz mag zwar keinen Gewinn erzielen, aber, einfach ausgedrückt, „Bekanntheit“. Bekanntheit, die zu mehr Öffentlichkeit führt. Und das allein kann die Anstrengung wert sein sowohl für eine kommerzielle als auch eine nichtkommerziell geführte Konferenz.

Welche Art von Bekanntheit könnte das sein, außer „die größte“ zu sein?

Eine Konferenz kann bekannt sein für:

  • Die beste Party“ – nehmt die ungeschlagenen SQLBits in Großbritannien mit seinen immer wechselnden Themen-Partys.
  • Die cool(st)e Location
    Wenn sie in einer bekannten Gastgeberstadt stattfindet, hilft es sehr – solange man eine Location auswählt, die zumindest typisch oder repräsentativ für die Stadt ist.
    Einige Beispiele wären: SQL Saturday Cambridge, SQL Saturday Malaysia/Kuala Lumpur – in den berühmten Petronas-Towers, SQL Saturday Singapore – mit Ausblick auf die berühmte Marina Bay – und viele andere. Oh, und SQLBits wiederum wechselt jedes Jahr die Gastgeberstadt und macht es sich zum Prinzip, seinen Teilnehmern und Sprechern die Vielfalt des Landes zu zeigen.
  • Die bekanntesten Sprecher“ – hier ist die einfache Regel (normalerweise): je größer die Konferenz, desto attraktiver für weltbekannte Sprecher. Kommerziell geführte Konferenzen können hierbei allerdings einen Vorteil gegenüber ähnlich großen Konferenzen haben, da sie den Sprechern ein Honorar bieten können.
    Wenn ihr unsicher seid, könnt ihr zunächst nach Sprechern Ausschau halten, die mit dem MVP Award ausgezeichnet worden sind (meistens ein Zeichen von viel öffentlicher Interaktion, also genau das, was eine Konferenz ausmacht) und MCM oder MCSM zertifizierten Profis (ein gutes Zeichen für praktische Erfahrung).
  • Große/größte Auswahl an Sessions“ – je größer das Publikum, das man anziehen möchte, je größer sollte die Auswahl an Themen sein. Und heutzutage ist sowieso alles irgendwie miteinander verbunden, so dass sogar ein Administrator an bestimmten BI oder selbst Data Science-Themen interessiert sein kann. Neben den Themen ist auch die Könnerstufe der Sessions wichtig für ein größeres Publikum – von der Anfängerstufe bis zur Fortgeschrittenen-Stufe.
  • Coole Preise und Goodies
    - Bei den meisten Konferenzen haben die Teilnehmer die Gelegenheit, einige Goodies einzusammeln oder sogar wertvolle Preise zu gewinnen.
    Ich persönlich habe es allerdings noch nie als speziell beworben gesehen. Inwieweit dies die Teilnehmer beeinflusst wiederzukommen, weiß ich nicht.
  • Das hier ist mehr Sprecher-zentriert: eine Konferenz kann unter Sprechern als „ein toller Gastgeber“ bekannt sein– indem ihnen ein spezielles Programm bietet. Zum Beispiel ist die SQLSaturday Portugal (übrigens die erste SQLSaturday außerhalb der USA) für seine ausgezeichnete Mannschaft an ehrenamtlichen Helfern bekannt, die uns sogar eine besondere Tour zu einigen berühmten Orten in Lissabon gegeben hatten – eine „private Sightseeing-Tour“. Bei SQL Gulf wurden wir zu einem traditionellen saudi-arabischen Abendessen eingeladen – vor der von ihnen selbst organisierten Sightseeing-Tour. Andere führen einen in traditionelle Restaurants und so weiter und so fort. In diesem Bereich kann man sehr kreativ sein. Aber die Lokalität hilft auf jeden Fall.
  • „Programmierer und sogar Manager von Microsoft/anderem Anbieter vor Ort haben“. Dieser etwas umständliche Punkt bezieht sich auf den zusätzlichen Wert, den eine Konferenz schaffen kann, wenn die tatsächlichen Programmierer, Programmmanager etc. der angezielten Software auf der Konferenz mit dabei sind. Für die meisten Teilnehmer ist dies die einzige Gelegenheit, die Leute hinter dem Produkt überhaupt je zu treffen.
    Der PASS Summit in den USA ist dafür bekannt. Die Nähe zu Redmond macht dies möglich. Für andere Konferenzen ist es viel schwieriger, aber dennoch kann man ab und an einige berühmte Leute von den Headquartern sehen. Die Größe der Konferenz allein ist zwar hilfreich, doch es hilft auf jeden Fall, als Organisator eine starke Verbindung zu Microsoft zu haben.

 Successful_Tech_Conferences_SQLBits2016_Party

„Space Party“ at SQL Bits 2016 - check out the dancing Darth Vader in the background :-D

 Successful_Tech_Conferences_SQLKonferenz2016_Channel9Video

Video shooting at SQL Konferenz 2016 with Joachim Hammer, Head of the Security-Team for relational Engines from Redmond (right), Tobiasz Koprowski from UK (middle) and myself – Video available at Channel 9: “Let's Talk SQL Server 2016 Security

volunteers are key

5)

And yet there is more. It is something that is not measurable in numbers or can be put in simple words: I will call it “atmosphere” in an attempt to give it a simple descriptive name. It consists of the certain spirit that you feel at the conference. How the people interact, how attendees approach speakers and vice versa. It is hard to describe, but when you have been at several conferences you will sense the difference.
Consequently this is also the aspect that can be influenced the least by an organizer. At least this is my feeling. By my observation the relative amount of volunteers are an indicator of a highly positive atmosphere. So maybe I should say: “volunteers are key” to a successful conference.

An ambitious crew of positive-thinking crew that puts its heart in the work for the conference can make a huge difference and give the conference the right impulse towards a successful conference with attendees and speakers wanting to come back.

And until someone proves me wrong I will leave this as a thesis :-)

- How do you find volunteers? Well, hopefully they will find you. ;-)

Besides obviously your local user groups it can help to talk to your local university’s technology/IT information department.

Small side note: As a university dropout (Japanese & British studies, for those who are curious – computer science, at least in terms of substance, was no good back then…) I would have never imagined to ever be giving presentations in a university auditorium. Yet this is exactly what I did a couple of years ago at SQLSaturday Rheinland/Germany at the Bonn-Rhein-Sieg University and, only recently, in the framework of SQLGulf, at the Alfaisal University in Riadh.

Unfortunately that is as much as I can say about finding volunteers. During my travels I did realize that there can be huge differences between countries in terms of volunteers. Why that is, is hard to tell and certainly a complex matter. I did find the volunteers outstanding at the SQL Server Geeks Conference in India and also in Portugal in terms of sheer number and positive energy. If you ever make it there, you will know what I mean.

5)

Und es gibt trotzdem noch etwas. Es ist etwas, das sich nicht in Zahlen messen oder einfachen Worten ausdrücken lässt: Ich nenne es mal „Atmosphäre“ im Versuch, ihm einen einfachen, anschaulichen Namen zu geben. Es besteht aus der bestimmten Stimmung, Atmosphäre, die man auf der Konferenz spürt. Wie die Leute miteinander interagieren, wie die Teilnehmer die Sprecher ansprechen und umgekehrt. Es ist schwer zu beschreiben, aber wenn man einmal auf mehreren Konferenzen gewesen ist, wird man den Unterschied spüren.

Demnach ist dies auch der Aspekt, der am wenigstens vom Organisator beeinflusst werden kann. Das ist jedenfalls mein Empfinden. Nach meiner Beobachtung ist die relative Zahl an ehrenamtlichen Helfern ein Indiz für eine äußerst positive Atmosphäre. Also sollte ich vielleicht sagen: „Ehrenamtliche Helfer sind wesentlich“ für eine erfolgreiche Konferenz.

Eine ambitionierte, positiv-denkende Mannschaft, die ihr Herz in die Arbeit für die Konferenz steckt, kann einen großen Unterschied machen und der Konferenz den richtigen Impuls hin zu einer erfolgreichen Konferenz geben, zu der die Teilnehmer und Sprecher zurückkommen wollen.

Und bis jemand beweist, dass ich falsch liege, lasse ich es als meine These stehen :-)

-Wie findet man ehrenamtliche Helfer? Nun, hoffentlich finden sie Euch. ;-)

Neben euren örtlichen Nutzergruppen (naheliegend) kann es hilfreich sein, mit der IT-Fakultät eurer örtlichen Universität zu sprechen.

Kleine Randnotiz: Als Studienabbrecher (Japanologie & Anglistik für wen es interessiert – Informatik taugte inhaltlich so rein gar nichts damals…) hätte ich nie gedacht, jemals im Auditorium einer Hochschule Vorträge zu halten. Und genau das habe ich dann vor einigen Jahren auf dem SQLSaturday Rheinland/Germany in der Hochschule Rhein-Sieg und kürzlich, im Rahmen von SQLGulf sogar in der Alfaisal Universität in Riad.

Leider ist das schon alles, was ich zum Thema Freiwillige finden sagen kann. Während meiner Reisen habe ich festgestellt, dass es große Unterschiede zwischen Ländern geben kann, was ehrenamtliche Helfer angeht. Warum das so ist, ist schwer zu sagen und sicherlich eine komplexe Materie. Ich fand die ehrenamtlichen Helfer auf der SQL Server Geeks-Konferenz in Indien und auch die in Portugal einfach umwerfend, nicht nur von der reinen Zahl her, sondern auch von der positiven Energie. Wenn Sie es einmal dahin schaffen, dann werden Sie wissen, was ich meine.

Successful_Tech_Conferences_SQLServerGeeksConference2016

Attendees, Speakers, organizers and volunteers at SQL Server Geeks Conference 2016 in Bangalore, India

Note that I do not include the point: being “the best conference”. As there are so many possibilities to host a great conference, accomplishing all at the same time seems rather impossible.

Beachtet, dass ich hier nicht den Punkt, „die beste Konferenz“ zu sein, aufführe. Da es so viele Möglichkeiten gibt, eine tolle Konferenz zu halten, scheint es eher unmöglich, alles auf einmal zu vollbringen.

 Successful_Tech_Conferences_SQLGulf3_GroupPic

Speakers and Organizers at SQL Gulf 2016 in Riadh, Saudi Arabia

“the most precious thing we all have to offer is time”

Finally: One may ask: “What do I look for as a speaker?”

Now, I cannot deny that being at conferences is also “work”. Even if I love my job and look forward to presenting, I do have to justify it from business aspects as well. Luckily, being the owner of Sarpedon Quality Lab, I allow myself a few exceptions and a relaxed attitude towards conference-attendance.
“You gotta love what you do, so why not work also just for the joy of it. At least sometimes…”
Therefore, at most community-driven events the reason why I just like to be there is because I love the community, the people around me: organizers, volunteers, co-speakers and attendees.
What’s more, there is little that gives such positive energy and boost like an actively interested audience does.

So the answer to the question as to which conferences I prefer would be: the ones with the best atmosphere und the most interactivity with the attendees. After all, the most precious thing we all have to offer is time. And a conference is a great opportunity to spend it with many people with similar interests.

Und schließlich: Man mag fragen: “Wonach suche ich als Sprecher?

Jetzt kann ich nicht bestreiten, dass auf Konferenzen zu sein auch „Arbeit“ ist. Obwohl ich meine Arbeit liebe und ich mich aufs Präsentieren freue, muss ich es auch aus geschäftlichen Aspekten rechtfertigen. Zum Glück kann ich mir, als Inhaber von Sarpedon Quality Lab, einige Ausnahmen und eine entspannte Einstellung gegenüber Konferenz-Teilnahmen erlauben.
„Man sollte seine Arbeit schon lieben, also warum nicht, wenigstens hin und wieder, einfach aus Spaß daran arbeiten...“
Was mir über die Jahre klargeworden ist, ist, dass ich einfach gern auf einigen Konferenzen bin, weil ich die Community: die Leute um mich herum, die Organisatoren, ehrenamtliche Helfer, Co-Sprecher und Teilnehmer dort sehr mag.
Außerdem gibt es wenig, das einem solch positive Energie und Schub gibt wie ein aktiv interessiertes Publikum.

Daher wäre die Antwort, welche Konferenzen ich vorziehe: diejenigen mit der besten Atmosphäre und der besten Interaktivität mit Teilnehmern.
Denn Zeit ist das wertvollste, das wir alle anzubieten haben. Und eine Konferenz ist eine tolle Gelegenheit, sie mit vielen Leuten mit ähnlichen Interessen zu teilen.

 Successful_Tech_Conferences_SQLSaturday_Singapore2016

View from the Microsoft office Singapore, the Location of SQLSaturday Singapore 2016

From the an attendee's point of view things like “many sessions to choose”, “well known top experts to meet”, “being able to interact with speakers and get answers to technical questions”, “connecting with fellow professionals” and “getting in touch with interesting companies (potentially new employers)” will probably be among the most important reasons.

Aus Sicht eines Teilnehmers sind vermutlich Dinge wie „viele Sessions zur Auswahl, „bekannte Top Experten treffen können“, „mit Sprechern in Kontakt kommen und Antworten auf technische Fragen zu erhalten“, „sich mit anderen Profis zu vernetzen“ und „mit interessanten Firmen (potentiellen neuen Arbeitgebern) in Kontakt zu kommen“ unter den wichtigsten Gründen sein.

Successful_Tech_Conferences_SQLSaturday_Malaysia2015

View from the Microsoft office Kuala Lumpur, the Location of SQLSaturday Malaysia 2015

 

Disclaimer: If I have not mentioned your conference, do not take it as a negative. I have simply been at too many (over 50 conferences in more than 12 countries) and on the other hand certainly not enough to make a scientific statement. I tried to give only a few examples for certain criteria. I am not doing an overall “rating of conferences”.

Disclaimer: Wenn ich Eure Konferenz nicht erwähnt habe, fasst es nicht negativ auf. Ich bin einfach auf zu vielen gewesen (über 50 Konferenzen in mehr als 12 Ländern) und andererseits sicherlich nicht genügend, um eine wissenschaftliche Aussage fällen zu können. Ich habe nur einige Beispiele für bestimmte Kriterien zu geben versucht und mache hier keine Gesamt-„Bewertung von Konferenzen“.

 Successful_Tech_Conferences_SQLGulf3_University

Alfaisal University in Riadh, the Location of SQL Gulf 2016

 

Question to my readers:

What do YOU think?
Why do you go to conferences, why do you speak at conferences, why do you organize conferences?

I am curious to hear your answers which may be slightly different for each of you.

Frage an meine Leser:

Was denkst DU?

Warum gehst Du auf Konferenzen, warum sprichst Du auf Konferenzen oder warum organisierst Du Konferenzen?

Ich bin neugierig auf Eure Antworten, die für jeden leicht unterschiedlich sein mögen.

 Successful_Tech_Conferences_MCSHA2016

Attendees at German SQL Server Master-Class “High Availability” 2015

Cu next conference

Andreas

Successful_Tech_Conferences_PASS_Summit2015_MCMs

The MCMs at the PASS Summit 2015