tag:blogger.com,1999:blog-115745042024-03-13T04:31:28.752+01:00Sascha Lorenz - with a passion for massive SQL Server workloadsA SQL Server Pro from Hamburg, Germany with a passion for OLTP databases, automated workload tests, and a fan of risk- & change-management approaches for development- & operations-teams.Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comBlogger337125tag:blogger.com,1999:blog-11574504.post-19769301046834525262018-01-21T10:03:00.001+01:002019-01-06T18:55:12.364+01:00A short history about SQL Server scalability<p>As more and more of our customers communicate with us in English, I decided to start blogging in English.</p> <p>So for my "new" readers here is a small introduction to what I do with SQL Server and other similar technologies. Originally I'm a developer, who is gradually immersed in various database technologies. I have been working with databases for more than 30 years now. I started my own business with my partners in 1994. Then, in the late 1990s, I discovered the vast possibilities of Microsoft SQL Server for our customers. Our office is in Hamburg, and since 2017 we also have an office in Karlsruhe in the south of Germany.</p> <p>The company name "Projekt Service" expresses what we do most of the time. We support projects of any kind, as long as they are related to SQL Server or databases in general, with our products. A plan can actually mean the classic long-running project as well as a short-term action to eliminate unwanted impact in development or operation.</p> <p>What value do we bring to projects? What are our products? As we have been here for several decades, our services have already undergone some changes. For a long time, we have only been working as consultants in the field of project work. About 10 years ago, we started to train and coach our customers to gain a deeper insight into the technical aspects of SQL Server. Our customers were enthusiastic about the technical depth and the many details that we passed on to their employees during the training sessions. Over time, we developed the training courses further together with our customers. The wish of the companies was that we not only provide technical expertise but also integrate methods and processes to apply this knowledge. This is how we developed our two methods PSG PDD & PSG RDD.</p> <p>With PSG PDD (Performance Driven Development) we address the development process of software solutions about the software properties performance and scalability. By this, we do not mean the usual subsequent performance tuning, but an acceptable method for mastering these two topics at every stage of development. The PSG PDD method addresses not only the real developer but also the team leader as well as the project manager, product owner and stakeholder. </p> <p>We give the necessary knowledge to apply the method to organizations, in several training modules and maturity levels. An essential aspect of this is that we want to avoid so-called rock stars in teams. Therefore, we do not provide much more in-depth technical knowledge at the higher levels, but rather the capabilities to measure and maintain performance and scalability and return these measurements as feedback to the team. They are more of training to be able to take responsibility for these areas and to better support colleagues in this aspect.</p> <p>With the PSG RDD (Repository Driven Development) method, we contribute our experience in managing very complex and large environments.  Examples can be environments with several hundred servers or ETL processes with many dynamic sources distributed all over the world.</p> <p>A noteworthy example for one of our first RDD implementations was a SQL Server Replications environment with over 1000 servers, which represented a global production control. Microsoft asked us to make this (maybe a bit questionable) architecture more manageable for the customer. The client's team had tried to tame this beast using a series of scripts. But there were too many heads, no matter how many scripts they created. So we decided to create a multi-level repository around the replication topology of the SQL Server to manage these enormous structures much more efficiently and automatically. In the following years, we have built various repositories around technologies such as Service Broker and CDC to make them even more efficient and manageable in complex environments.</p> <p>We are also often consulted to evaluate the status of an ISV's development or product concerning the use of SQL Server's capabilities and best practices. A frequent cause for such engagements are complications with our core subjects performance and scalability. By our evaluation, concrete measures are then arranged with our customer to address the problems. It is usually agreed that we should train the whole development team or at least some members.</p> <p>Frequently, we were also called upon to create monitoring concepts for SQL Server environments. Our primary concern is not so much the selection of a product but rather the design of monitoring processes which have maximum effectiveness about the possible actions. What is the advantage of an administrator if he or she continually receives information in monitoring about what to change in the software if he or she is not allowed to make these changes? On the other hand, an administrator who works with a team of developers should be able to reconcile the developer's expectations regarding the behavior of the solution with the state of the production environment at any time. In some cases, customers have also decided to delegate parts of the operational responsibility to us.</p> <p>While this has been my professional background over the last years. I have presented my experience on these topics at various community events in the UK and Germany. Since 2005 I am responsible for a local SQL Server community in Hamburg, which is a chapter of the PASS. I received the MVP Award for my community work in 2014, 2015 and 2016.</p> <p>When I look at the topics of my talks in recent years, my progress is quite clear. I've always been a developer and ever tried to automate processes. Over time, in addition to my enthusiasm for technology, I have also attached increasing importance to the efficiency and cost-effectiveness of my recommendations and activities.</p> <p>My blog thus reflects my current interests:</p> <p>Helping customers heal slow systems. <br /> The transfer of know-how to design systems fast and scalable. These critical properties of a solution are challenging to achieve afterward. <br /> Bringing new, currently available technologies such as my favorite in-memory OLTP to companies. <br /> And, last but not least, to prepare customers for new and fundamental other ways to develop their solutions so that they are ready for the effective use of cloud infrastructures, Docker, etc.</p> <p> <br /> I would be pleased if you would follow me on my journey through the Data world.</p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-33188674533654703162017-09-02T14:52:00.001+02:002017-09-02T17:14:03.928+02:00SQL Server In-Memory OLTP - max() vs. ident_current()<p>Während eines <a href="http://saschalorenz.blogspot.com/2017/07/psg-performance-driven-development-fur.html" target="_blank">Performance Driven Development Advanced Trainings</a> kam eine interessante Fragestellung auf. </p> <p>Die Aufgabenstellung war einen einfachen lesenden Workload zu erzeugen, um die Geschwindigkeit von In-Memory OLTP zu testen. Folgender Code wurde vorgeschlagen:</p> <p><font face="Courier New">declare @max int <br />select @max = max(id) from t1_old</font></p> <font face="Courier New"></font> <p><font face="Courier New">declare @i int = rand()*@max <br />select * from t1_old <br />where id >= @i and id <= @i+rand()*250</font></p> <p>Sehr unverdächtig! </p> <p>Das offensichtliche Problem in der Where Clause lassen wir für den Moment mal unkommentiert. Das lösen wir weiter unten noch auf. Ich fand den Vorschlag ganz okay, da er echte Probleme der Qualität von T-SQL Code aufzeigte. </p> <p>Die physikalische Struktur hinter t1_old ist ein Clustered Index mit der ID als Clusterkey. </p> <p>Ein Test mit einer interaktiven Variante unseres Werkzeuges <a href="http://saschalorenz.blogspot.com/2016/06/sql-server-in-memory-oltp-ein-pladoyer.html" target="_blank">SQLPressure</a> ergab, bei einer Steigerung von 20 Threads alle 5 Sekunden, dass sich der Workload bei 300 Threads mit einem Durchsatz von ungefähr 5000 einpendelt. Nicht schlecht für eine VM mit 4 virtuellen Kernen. </p> <p><a href="https://lh3.googleusercontent.com/-w4LVXlfef6I/Waqpajrk2hI/AAAAAAAAA68/tmLmj1lEG5IXp3rg3rwQlrsTG4UyqrsPQCHMYCw/s1600-h/image%255B11%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-TQyaUbJwiuc/Waqpa4Aa74I/AAAAAAAAA7A/cpw2YwukB3wEd8a39MKTZ4UO-KtEsRInwCHMYCw/image_thumb%255B5%255D?imgmax=800" width="616" height="471" /></a></p> <p>Dann kam der eigentliche spannende Test. Und zwar auf der In-Memory Struktur von t1. Es wurde natürlich mit einer deutlichen Steigerung des Durchsatzes gerechnet! by the way, auf id liegt der NONCLUSTERED index. Es gibt keinen HASH Index, da eine Bereichsabfrage geplant ist. </p> <p><a href="https://lh3.googleusercontent.com/-H-smjrcsP4g/WaqpbWQpIYI/AAAAAAAAA7E/Lkcah_o888AUMmn6WbTmBHN_FxVg-oN0ACHMYCw/s1600-h/image%255B3%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-6q-_lqE_Ekw/Waqpbw3k0fI/AAAAAAAAA7I/fG2FqoqFp0Q91x-ONudd2DHtUnq_pwrpACHMYCw/image_thumb%255B1%255D?imgmax=800" width="616" height="471" /></a></p> <p>Das Ergebnis war eher enttäuschend. Was war passiert? Der Durchsatz lag sogar unter dem Ergebnis der diskbased Table t1_old. Die Tabellen wurden neu erstellt. Die Tests wiederholt. Ähnliche Ergebnisse. Der Glauben an In-Memory OLTP war zerstört. </p> <p>Weitere Tests ergaben, dass gar nicht die eigentliche Query das Problem war, sondern die max(id) Abfrage. Dazu wurde die max Funktion durch eine statische Angabe ersetzt. </p> <p><a href="https://lh3.googleusercontent.com/-h_NeVB8Q7As/WaqpcJ51VvI/AAAAAAAAA7M/Y9sWbYu5emoJM5FDIIdV-yzT6q6mq-dLwCHMYCw/s1600-h/image%255B19%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-KJd3MGptyuc/WaqpcrhMFII/AAAAAAAAA7Q/c3h8FTx0TyMwe1F2_D4kNH4CQUr3MEypACHMYCw/image_thumb%255B9%255D?imgmax=800" width="616" height="471" /></a></p> <p>Als Nächstes wurde überlegt, wie man max() ersetzen könnte. Irgendwo gab es doch da Funktionen? Genau, es gibt u.a. ident_current(), um das letzte Autoincrement einer Tabelle abzufragen. </p> <p>Im nächsten Test wurde entsprechend diese Funktion verwendet. </p> <p><a href="https://lh3.googleusercontent.com/-QCGbB8P4ix4/WaqpcxGCwqI/AAAAAAAAA7U/TYHoMN9rakgLYutdWUcvC3Qf36YApwBQgCHMYCw/s1600-h/image%255B7%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-jwpmqXFrurk/WaqpdWJnAOI/AAAAAAAAA7Y/CDQ0K7yipwUauj1WHwYnkkwi_OJhXg4ggCHMYCw/image_thumb%255B3%255D?imgmax=800" width="616" height="471" /></a></p> <p>Und siehe da. Wir haben In-Memory OLTP da, wo wir unseren Workload vermuten würden. Zwar scheint auch der Einsatz von ident_current() nicht völlig transparent zu sein, dennoch scheint sie deutlich weniger auszubremsen als max().</p> <p>Ein letzter Test sollte noch zeigen, ob ident_current() vielleicht auch beim disk-based Table noch etwas herausholen könnte. </p> <p><a href="https://lh3.googleusercontent.com/-HCDfVE9JO-E/Waqpd1EGwfI/AAAAAAAAA7c/QYacGLr1NcsA5rFwChu2k2rUGFP_g7a5ACHMYCw/s1600-h/image%255B15%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-SrewTHyYEl8/WaqpeckONEI/AAAAAAAAA7g/iIMMNQ_9vOAPagMTUauFWMq-8loSkmKpQCHMYCw/image_thumb%255B7%255D?imgmax=800" width="616" height="471" /></a></p> <p>Dem war aber nicht so! Hier macht die Verwendung von max() und ident_current() keinen wirklich messbaren Unterschied. </p> <p>Eine kurze Betrachtung der Querypläne ergab, dass die Implementierung von max() deutlich abweicht. </p> <p>Hier für die diskbased Variante:</p> <p><a href="https://lh3.googleusercontent.com/-qC9o4-SrkNE/WaqpeuNzXKI/AAAAAAAAA7k/BFN5_DJeByMLOZ20tAzid16---yQQd3RgCHMYCw/s1600-h/image%255B26%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-SocTJZoFueQ/Waqpf2-OP4I/AAAAAAAAA7o/G3vYvUCA7bMjW4_Q1X-fM2mO9iAR1ocJgCHMYCw/image_thumb%255B12%255D?imgmax=800" width="665" height="288" /></a></p> <p>Und hier für die In-Memory OLTP Variante: </p> <p><a href="https://lh3.googleusercontent.com/-6FbhwCiy7Qs/WaqpgWTFLHI/AAAAAAAAA7s/WWWI02bH1k4RVXkYxNVgXrxelGpyPxr7wCHMYCw/s1600-h/image%255B30%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-ldQPwaYFoDc/WaqpgyI2L6I/AAAAAAAAA7w/PQInoxSI97chnPSi8srI5K3kYpqz9ffAwCHMYCw/image_thumb%255B14%255D?imgmax=800" width="551" height="273" /></a></p> <p>Hier kann schon anhand der Unterstrukturkosten gesehen werden, dass die zweite Variante einfach ein wenig länger brauchen wird. </p> <p>Dieses kleine Beispiel zeigt auf, dass eine einfache Portierung von Tabellen nach in-memory OLTP nicht immer sofort den gewünschten Geschwindigkeitsgewinn bringen muss. </p> <p>So, kommen wir zum SARG Problem in der Where Clause. </p> <p><font face="Courier New">where id >= @i and <u>id <= @i+rand()*250</u></font></p> <p>Da hat der Query Optimizer natürlich keine Chance mit dem zweiten Teil. Daher kam noch mein Vorschlag, dass wir den Teil aus der Where Clause entfernen und separat “ausrechnen”. </p> <p><font face="Courier New">declare @max int <br />select @max = max(id) from t1_old</font></p> <font face="Courier New"></font> <p><font face="Courier New">declare @i int = rand()*@max <br />declare @iend int = @i+rand()*250 <br /></font><font face="Courier New"> <br />select * from t1_old <br />where id >= @i and id <= @iend</font></p> <p>Und dann kam der nächste Test. Erstmal mit der diskbased Engine. </p> <p><a href="https://lh3.googleusercontent.com/-vsPP6xUxv3I/WarKtRK0qPI/AAAAAAAAA8A/2FX_auNYorwAUzEJ1ZlN5-eoQ-kYaf7lgCHMYCw/s1600-h/image%255B4%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-_vSbg649Zd0/WarKtx8R85I/AAAAAAAAA8E/St-2T7WGQVA21rKcAJ26BZu6vYxz-OoMQCHMYCw/image_thumb%255B1%255D?imgmax=800" width="616" height="471" /></a></p> <p>Wow, da geht auf einmal ja richtig viel. Ja, die gute alte 8kb Seite hat es noch voll drauf. Zumindest, was das Lesen angeht. :)</p> <p>Und dann nochmals mit der in-memory OLTP Engine. Das Resultat hat alle überrascht. </p> <p><a href="https://lh3.googleusercontent.com/-rf4lWXE2gtQ/WarKuXFJpoI/AAAAAAAAA8I/lF3_8H9RmSUV2-AWmKr7Y7GKiBrAjStNQCHMYCw/s1600-h/image%255B8%255D"><img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="https://lh3.googleusercontent.com/-VrTCgPE0bUE/WarKuqYRnkI/AAAAAAAAA8M/-C1Dlx1bJn0ZRYjfwYjh0ftEvLhYDOaRwCHMYCw/image_thumb%255B3%255D?imgmax=800" width="616" height="471" /></a></p> <p>Es tat sich nicht wirklich viel. Was sagt uns das? Für den Moment, dass dieser rein lesende Workload in beiden Engines sich ähnlich verhält. Dem in-memory OLTP Ansatz mussten wir ebenso mit einer Code Änderung “über die Straße helfen” als auch dem diskbased T-SQL.</p> <p>Nur was passiert, wenn wir anfangen Daten zu ändern? Das zeige ich demnächst mal. :) </p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-73096430586422024472017-07-10T11:41:00.001+02:002017-07-10T11:41:20.995+02:00PSG Performance Driven Development für den SQL Server<p>In den letzten Monaten wurde ich häufig danach gefragt, was denn dieses Performance Driven Development (PSG PDD) eigentlich sei? Und welche Technologien wir damit meinen? </p> <p>In erster Linie verstehen wir unter der Performance Driven Development Methode weniger einen Technologie Ansatz, als vielmehr einen Rahmen an Maßnahmen, damit das Thema Performance im Laufe einer Software Entwicklung den Stellenwert er- und behält, welcher bei Projektstart als notwendig erachtet wurde. </p> <p>Entstanden ist die Idee zu der Methode u.a. aus dem Feedback unserer Schulungskunden. </p> <p>Es wurde uns zwar attestiert, dass die Teilnehmer unserer Workshops und Schulungen einen deutlichen Knowhow Fortschritt machen würden, dennoch wäre es für den einzelnen Entwickler immer wieder schwierig sei neues Wissen auch so einzusetzen, dass die Projekte bzw. Produkte davon wirklich partizipieren. Der Alltag von Entwicklern sei ja stark getrieben durch ein agiles geprägtes Umfeld und Stakeholder, für die diese grundlegenden technischen Storys erstmal nicht im Fokus stehen. Performance Themen während einer Entwicklung kann man weder sehen noch erleben. Das ist häufig etwas für „Später“. Und oft ist der generelle Tenor in Projekten, dass das eine Grundschuld sei, welche natürlich ein Entwickler immer im Blick haben muss. </p> <p>In der Vergangenheit haben Endkunden durch regelmäßige Wiederholungen ihrer Schulungsmaßnahmen versucht diesen Effekten entgegenzuwirken. Ich möchte mich ja nicht über Umsatz beklagen, aber es ist nur bedingt eine Freude, wenn die Teilnehmer dann wiederholt anmerken, dass sie für das Thema dann im Projekt eigentlich keine Zeit hätten, weil es einfach keinem wichtig sei. Und wenn es später in den ersten Tagen in der Produktion zu Problemen kommt, dann ist es meist auch schon zu spät und man erhofft sich Wunder durch ein nachträgliches Tuning. </p> <p>Ein weiterer Aspekt, welcher uns durch das Feedback der Schulungskunden und Teilnehmer erreichte, war, dass mit jeder neuen SQL Server Version (und damit oft auch Schulung) sich das quasi magische Features erhofft wird, damit der SQL Server endlich mal schnell wird. </p> <p>Zwar wird der SQL Server mit jeder Version natürlich leistungsfähiger und bringt noch mehr Intelligenz mit, um Performance Herausforderungen zu begegnen, dennoch lassen sich diese immer noch durch viele gängige Methoden in der Entwicklung quasi unbemerkt komplett aushebeln. Des Weiteren steht natürlich die Frage im Raum, wie man denn neue Technologien wie zum Beispiel in-Memory OLTP in Abteilungen bringen soll, wenn für das Thema Performance eigentlich keine Zeit ist. Hier beißt sich die Katze in den Schwanz. </p> <p>Was heißt das jetzt konkret?</p> <p>Der Performance Driven Development besteht auf der einen Seite aus einer Reihe von Schulungen, um Entwicklern Hintergründe des SQL Servers so aufzubereiten, dass diese ein notwendiges Verständnis bekommen, wie sie Einfluss auf die zu erwartende Geschwindigkeit ihrer Lösung bekommen.</p> <p>Diese Schulungen haben wir so ausgestaltet, dass wir unterschiedliche Module in wiederum aufeinander aufbauenden Leveln anbieten. </p> <p>Ein Ziel war, dass wir die Teilnehmer nicht mit Details überfrachten und sie damit komplett irritiert und bewegungsunfähig zurücklassen.</p> <p>Auf der anderen Seite gibt es Schulungsmodule, welche sich an unterschiedliche Rollen im Performance Driven Development Konzept wenden. Damit adressieren wir auch Projektleiter, Product Owner usw. Inhalt dieser Module sind weniger technische Details über eine Implementierung, sondern vielmehr Methoden zur Definition von Performance generell und wie diese im Projektverlauf kontinuierlich gemessen werden kann. Eine wesentliche Frage, welche wir im Verlauf dieser Module klären, ist, wie man den Aspekt Performance so beschreibt, dass alle Projektbeteiligten später über dasselbe Erlebnis bzw. Ergebnis sprechen. </p> <p>Ein Ziel dieser Module ist, dass Projektvereinbarungen so formuliert werden können, dass es keine „Missverständnisse“ bzgl. der erwarteten Performance und der Skalierbarkeit einer Lösung geben wird. Erwartungen hinsichtlich der Möglichkeiten aber auch Grenzen müssen klar in ein System gebracht werden.</p> <p>Als wichtig hat sich die Balance zwischen der Vermittlung eines konzeptuellen Rahmens als auch konkreter Maßnahmen erwiesen. </p> <p>Für jedes dieser Module im jeweiligen Niveau bieten wir mittlerweile auf Wunsch auch eine Zertifizierung der erworbenen Kenntnisse an. Damit bieten wir sowohl einen Anreiz für die Teilnehmer als auch Kontrolle für die Stakeholder der Maßnahme an. </p> <p>Ein weiterer Aspekt bei der Planung der Umsetzung von PSG PDD sind die Teamgrößen in den Unternehmen. Es macht einfach keinen Sinn mit einem generischen Rollenmodell sowohl Teams 5 als auch von 25 Entwicklern zu adressieren. </p> <p>Ich hoffe, dass ich damit einen kurzen Überblick über den PSG PDD Ansatz geben konnte. In den folgenden Tagen werde ich gern auf die unterschiedlichen Inhalte eingehen, da ich der Meinung bin, dass dieser oder auch vergleichbare Ansätze nötig sind, um den heutigen Anforderungen an Entwicklungsteams zu entsprechen. </p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-21248052690534940492017-06-28T09:10:00.001+02:002017-06-28T09:10:05.616+02:00Was ist eigentlich SQL Server Performance? Und überhaupt?<p>Neulich wurde ich gefragt, was ich denn die letzten Monate so gemacht hätte. Es wäre ja recht ruhig um mich herum geworden.Keine Sorge! Natürlich bin ich dem Microsoft SQL Server und der Data Platform treu geblieben, auch wenn ich wieder öfters über den Tellerrand blicken durfte. </p> <p>Womit habe ich mich also die letzten Monate so beschäftigt?</p> <p>Zum einen bin ich in letzter Zeit immer wieder jenseits der reinen Vermittlung von technischen Features unterwegs. Vielmehr zeigt sich, dass unsere Kunden davon profitieren, dass wir unsere Technologie- und Projekt-Erfahrung in vermittelbare Konzepte und Prinzipien überführt haben. Also neben dem “Was gibt es?” kommen wir im Rahmen unserer Methoden Schulungen immer häufiger auf das “Warum?” und “Wie im Team?” zu sprechen.  </p> <p>Zum anderen führen wir immer mehr Microsoft Kunden an die “neuen” Themen heran. Wir konzentrieren uns dabei zurzeit auf Azure IaaS und In-Memory OLTP. Wesentlich für uns ist dabei wiederum die Einsicht, dass die reine Vermittlung von Features wenig Wirkung in den Abteilungen (DEV/DBA) zeigt. Daher haben wir diese Technologien in unsere Methoden Welt integriert, um eine möglichst hohe Wirtschaftlichkeit für Microsoft Kunden zu erreichen.</p> <h3>Performance?</h3> <p>Konkret ging das dabei häufig um Fragestellungen rund um die Performance von SQL Server Applikationen. Im Rahmen dieser Tätigkeiten zeigte sich, dass der Begriff Performance oft nur sehr schwammig definiert ist. </p> <p>Es soll halt schneller werden! Nur mit so einer Aussage bzw. so einem Ziel lässt sich in einem Projekt (agil oder nicht) wenig erreichen.</p> <p>Vielmehr zeigte sich, dass es diverse Sichtweisen auf die Verfügbarkeit und Performance von Lösungen gibt, welche einen oder mehrere SQL Server nutzen.</p> <p>Unteranderem distanziere ich mich immer mehr von dem Begriff des häufig bemühten “<strong>Tunings</strong>”, da es sowohl Entwicklern als auch Budget Verantwortlichen suggeriert, dass ein schlechtes Design später noch durch “ein paar zusätzliche Indizes” zu retten sei. </p> <p>Mittlerweile offerieren wir hier eine Methode, welche wir als “<u>PSG Performance Driven Development</u>” (PSG PDD) bezeichnen. </p> <p>Neben der Vermittlung von grundlegenden Fakten über die Funktionsweise der relationalen Datenbank Engine, setzen wir auch einen deutlichen Schwerpunkt auf die Planbarkeit der Verfügbarkeit einer Lösung im späteren Betrieb. Innerhalb von Entwicklungsteams benennen wir Rollen, welche u.a. für die kontinuierliche Durchführung von realistischen Lasttests der Lösung verantwortlich sind. </p> <p>Ein wenig dazu habe ich bereits in meinen Vorträgen zu dem Thema “<a href="https://www.meetup.com/de-DE/Hamburger-MS-SQL-Server-Usergroup-by-PASS-Deutschland-e-V/events/234498289/" target="_blank">7 wichtige Fakten, die jeder Entwickler über den SQL Server wissen sollte</a>” in den Usergroups gezeigt. </p> <p>Neben Technologie Knowhow und Methoden Kompetenz spielen auch weitere Entwicklungswerkzeuge eine Rolle bei PSG PDD. Dazu gleich noch mehr. </p> <h3>Komplexität?</h3> <p>Da die Nutzung von immer mehr Möglichkeiten im SQL Server und den verwandten Microsoft Diensten auch zu einer deutlichen Steigerung der Komplexität von Lösungen und Umgebungen führen, haben wir uns über die letzten Jahrzehnte auch immer wieder dieses Themas annehmen müssen. Der Reduzierung von Komplexität bei gleichzeitiger Steigerung der Wirksamkeit innerhalb der Prozesse und Wirtschaftlichkeit in der Betreuung. </p> <p>Als Beispiel sei ein Projekt kurz beschrieben, welches wir schon vor gut einem Jahrzehnt durchführten. Damals sprach uns die Microsoft an, ob wir bei einem internationalem Konzernkunden unterstützen können, welcher eine komplexe Data Management Lösung auf über 1000 SQL Servern weltweit betrieben hat. Es stellte sich schnell heraus, dass die existierende Lösung quasi nicht mehr zu kontrollieren war. Dennoch musste der Betrieb aufrecht erhalten werden, da ein Neudesign auf Basis anderer Technologien und Konzepte nicht möglich war. </p> <p>Ein klassischer Fall.</p> <p>Wir haben damals einen Lösungsansatz zum Einsatz gebracht, welchen wir bereits in anderen Projekten erfolgreich eingesetzt haben. Wir nahmen die Umgebung und überführten diese in ein mehrstufiges Repository. Damit nahmen wir sehr viel Komplexität aus dem eigentlichen Betrieb und schufen Werkzeuge, welche die Umgebung zum Teil auch selbständig überwachten und Probleme sofort von sich aus löste. </p> <p>Diese Methoden haben wir über die Jahre hinweg weiter entwickelt und vielfach eingesetzt. Mittlerweile nennen wir die Muster und Methoden “<u>PSG Repository Driven Design</u>” (PSG RDD). </p> <p>Zum Teil zeigte ich bereits vor einigen Jahren Muster aus dieser Methode in meinem Vortrag “<a href="http://www.sqlbits.com/Sessions/Event7/The_Developer_Side_of_the_Microsoft_Business_Intelligence_stack" target="_blank">The Developer Side of the Microsoft Business Intelligence stack</a>”. Wobei die RDD Methode bei weitem nicht nur in Business Intelligence Projekten zum Einsatz gekommen ist.</p> <p>In letzter Zeit konnten wir damit u.a. komplexe ELT Strecken für Kunden realisieren. Des Weiteren kam die Methoden bei einem umfangreichen Banken Projekt zum Einsatz, um eine über Jahrzehnte gewachsene SQL Server Umgebung wieder unter Kontrolle zu bekommen. </p> <p>Häufig nutzen wir RDD auch, um umfangreichen Replikationstopologien zu verwalten oder auch, um ebenso große Change Data Capture (CDC) Implementierungen wieder verwaltbar zu gestalten.</p> <p>Für uns ist dieser deskriptive Ansatz zur Verwaltung von Datenbanken und Servern mittlerweile alltäglich geworden. </p> <h3>Deskriptive IT mit Azure</h3> <p>Damit kommen wir zu einem weiteren Thema mit dem wir uns in letzter Zeit immer intensiver beschäftigt haben: Der Cloud. Speziell natürlich Microsoft Azure.</p> <p>Gerade das Thema Azure IaaS ist für uns zurzeit sehr interessant. Sowohl für PSG PDD als auch für PSG RDD nutzen wir immer häufiger auch Komponenten in Azure, um temporär notwendige Ressourcen kostengünstig und schnell zu allokieren. </p> <p>Azure IaaS ist für uns deskriptive IT in Reinform und lässt sich damit ganz hervorragend in unsere Methoden Welt integrieren. </p> <p>Als ein Beispiel sei die automatische Provisionierung und Deprovisionierung von Umgebungen in Azure für automatische Lasttests genannt, um kontinuierlich die Belastbarkeit von Lösungen zu prüfen und zu dokumentieren. Damit passt Azure auch sehr gut zu unserem Performance Driven Development Ansatz. Selbst wenn die eigentliche Entwicklung und auch der Betrieb der Lösung zurzeit noch on-prem stattfindet. </p> <h3>Dokumentation vs. Inventarisierung</h3> <p>Als ein letztes Thema, welches mich die letzten Monate stark in Beschlag genommen hat, sei noch Dokumentation von SQL Server Umgebung und Applikationen genannt. </p> <p>Häufig werden wir aufgefordert, um im Auftrag eines Kunden eine Software Entwicklung zu auditieren (extern oder auch intern). Dabei geht es u.a.um die Skalierbarkeit der Lösung hinsichtlich Performance und Ausfallsicherheit. </p> <p>Einer häufigsten Gründe für eine Einbeziehung unseres Hauses ist der kontinuierliche Wunsch des Software Lieferanten nach immer größerer Hardware, da ja auch die Datenmenge stetig wächst. </p> <p>Dem muss ich entgegensetzen, dass meiner Meinung nach die Größe einer Datenbank keinen Einfluss auf die Performance einer Lösungen haben sollte. Falls dem so ist, dann lässt dieses meist auf technische Schulden im Design der Lösung schließen. </p> <p>Ähnlich steht es um die Anzahl von gleichzeitigen Anwendern, wobei ich dieses Argument noch ein klein wenig mehr nachvollziehen kann, da die wenigsten Entwicklungsteams bisher die Möglichkeiten hatten, um echte Lasttests zu fahren. </p> <p>Bei diesen Audits stellen wir immer wieder fest, dass das Thema Dokumentation und Nachvollziehbarkeit stiefmütterlich betrieben wird. Herausforderungen wie die Planbarkeit von Verfügbarkeit oder gar DevOps rücken damit oft in weite Ferne. </p> <p>Daher wurden wir aufgefordert Vorschläge zu unterbreiten, wie diesem Mängeln zu begegnen sei. Die daraus entstandenen Dokumentationskonzepte sind wiederum aufgegangen in PSG PDD als auch im PSG RDD. </p> <h3>Eigene Werkezuge</h3> <p>Wie bereits angedeutet, haben wir uns auch mit interner Software Entwicklung beschäftigt. </p> <p>Dabei haben wir einen Tool Stack entwickelt, welcher sowohl die Performance als auch die Repository Konzepte unterstützt. </p> <p>Es handelt sich hier um eine Sammlung von Monitoring Werkzeugen, welche unseren PDD Ansatz nahtlos unterstützen. Dazu kommen Werkzeuge für Lasttests, welche sich auch ganz hervorragend in Azure betreiben lassen, um wirklich realistische Last regelmäßig auf einer in der Entwicklung befindlichen Lösung zu erzeugen. </p> <p>Diese Tools kamen bereits erfolgreich bei einigen unserer größeren Kunden bzw. komplexeren Projekte zum Einsatz. </p> <h3>Wie geht es weiter?</h3> <p>In den nächsten Wochen möchte ich die ruhige Sommerzeit nutzen, um das eine oder andere Thema mal wieder im Detail zu erläutern und der SQL Server Community damit auch wieder Anregungen aus meinem Alltag zu geben. </p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-28457855881613582492016-07-20T17:45:00.001+02:002016-07-20T17:45:36.877+02:00SQL Server In-Memory OLTP – Isolation Level Beispiele<p>Wie schon mal von mir erwähnt, erlebe ich bei den Teilnehmern meiner SQL Server In-Memory OLTP <a href="http://www.psg.de/leistungen/workshops/">Workshops</a> die meisten Schwierigkeiten bei der Verwendung der “neuen” Isolation Level. Zwar klingen für viele Entwickler die Level SNAPSHOT, REPEATABLE READ und SERIALIZABLE vertraut, nur schon bei den SQL Server “disk-based” Tabellen haben die wenigsten diese aktiv genutzt. Standard ist häufig READ COMMITED und das ist auch gut so. Die Tatsache, dass In-Memory OLTP aber ohne Sperren auskommt, fühlt sich für die meisten Entwickler erstmal befremdlich an. </p> <p>Zwar haben wohl die meisten Interessierten schon mal die Microsoft PowerPoints mit einer Erklärung des Version Stores gesehen und sich gefreut, wie schön da Versionen von Zeilen nebeneinander koexistieren können. Nur wie sieht das in der Praxis für den Entwickler aus? </p> <p>Der deutsche Begriff für die Technologie In-Memory OLTP “Arbeitsspeicheroptimierung” trifft es irgendwie nicht ganz. Zwar wird der Arbeitsspeicher wesentlich optimierter genutzt, dennoch klingt das im Deutschen schon unspektakulär, oder? </p> <p>In-Memory OLTP wurde entwickelt, um äußerst schnelle Lösungen zu ermöglichen. Auch wenn man mittels altbekanntem T-SQL mit dieser Engine arbeitet und diese auch hybride Lösungen mit den nun  “disk-based” Tabellen (also den guten alten 8kb-lastigen Strukturen) ermöglicht, so ist es doch eine durch und durch neue Engine. Und vieles was die gute alte Engine an Schlamperei bei der Programmierung einfach mal geschluckt hat, funktioniert nun nicht mehr. Dafür ist In-Memory OLTP einfach zu spezialisiert auf Geschwindigkeit. Spontane Flexibilität wird da schwierig. </p> <p>Zur Erinnerung: Isolation Level bestimmen in der Welt der pessimistischen Level wie lange ein Shared Lock auf einem Datensatz oder gar auf einen Bereich aufrecht erhalten wird. Wenn ein Datensatz exklusiv gesperrt ist, dann kann er nicht gelesen und erst recht nicht geändert werden. Also, es kommt in einer Transaktion ein SELECT daher und verhindert durch den verwendeten Isolation Level, dass andere Transaktionen Daten ändern oder ergänzen können. Die Transaktion mit der Änderung (UPDATE, DELETE usw.) bleibt einfach hängen (Blocking genannt…), da ja kein rankommen an die Daten ist. Ist ja ein Shared Lock drauf.  </p> <p>In der optimistischen Welt der In-Memory OLTP Engine ist das alles anders. Und ja, auch schon früher konnte man mit optimistischer Isolation arbeiten, nur haben das die wenigsten Entwickler genutzt. Die Wahl hat man nicht mehr, wenn man wenn es nun “ein wenig” schneller haben möchte. </p> <p>Durch den Version Store von In-Memory OLTP können nun mehrere Versionen einer Datenzeilen parallel existieren und jede Transaktion sieht die für sich gültigen Zeilen. Liest sich doch ganz einfach, oder? Wie ist das jetzt aber bei Änderungen? Und wenn jeder seine “Wahrheit” sieht, wer hat dann am Ende recht? </p> <p>Abgesehen von zwei Ausnahmen (Wobei es sich eigentlich nur um eine handelt…), lässt der SQL Server erstmal alle Änderungen zu. Erst beim COMMIT einer Transaktion wird geprüft, ob es Abhängigkeiten gibt, welche einen Fehler auslösen müssen. Und, um es nun noch ein wenig interessanter zu gestalten, im Gegensatz zum pessimistischen Modell, können nun SELECTs im Nachhinein ungültig sein. </p> <p>Gehen wir ein paar Beispiele einfach mal durch. </p> <p>Hier sehen wir, dass ein einfaches SELECT problemlos läuft. Nichts anderes haben wir erwartet, oder? </p> <p><a href="https://lh3.googleusercontent.com/-Soy64f5yI4U/V4-cYLSrvPI/AAAAAAAAA1o/0zlRaqyggRg/s1600-h/image%25255B6%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-huCBlU95M-g/V4-cZXrmhUI/AAAAAAAAA1s/NvQrkYq7CEo/image_thumb%25255B2%25255D.png?imgmax=800" width="404" height="211" /></a></p> <p>Was ist das? Sobald wir eine explizite Transaktion aufmachen und ein SELECT ausführen, gibt es einen Fehler. </p> <p><a href="https://lh3.googleusercontent.com/-5iOc5yqRYU4/V4-cZr4t8_I/AAAAAAAAA1w/SF6m3D-ft5k/s1600-h/image%25255B10%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-mNLH5gUSA1U/V4-caKw2PvI/AAAAAAAAA10/W_BsT6KFTec/image_thumb%25255B4%25255D.png?imgmax=800" width="404" height="206" /></a></p> <em><font color="#ff0000">Meldung 41368, Ebene 16, Status 0, Zeile 5 <br />Accessing memory optimized tables using the READ COMMITTED isolation level is supported only for autocommit transactions. It is not supported for explicit or implicit transactions. Provide a supported isolation level for the memory optimized table using a table hint, such as WITH (SNAPSHOT).</font></em> <p>Wir lernen aus der Fehlermeldung, dass wir einen Isolation Level benötigen, wenn wir mit transaktionalen Klammern arbeiten. In den folgenden Beispielen setze ich daher einen Table Hint (WITH SNAPSHOT).</p> <p>Und schon funktioniert unsere einfache Abfrage. </p> <p><a href="https://lh3.googleusercontent.com/-5EyfY-66UGw/V4-caUZdjhI/AAAAAAAAA14/In15SrV2QJ0/s1600-h/image%25255B14%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-2653imnJPeg/V4-caxvH_8I/AAAAAAAAA18/chpoOFBrYOs/image_thumb%25255B6%25255D.png?imgmax=800" width="404" height="236" /></a></p> <p>Kommen wir zu spannenderen Dingen. Wir öffnen eine weitere Session und führen ebenfalls ein SELECT in einer Transaktion aus. Wichtig hierbei, wir schließen diese noch nicht.</p> <p><a href="https://lh3.googleusercontent.com/-WQrLdSdw5tU/V4-cbJJ18NI/AAAAAAAAA2A/6dJ7lJg50QE/s1600-h/image%25255B18%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-qSI2HEQs9HE/V4-cbmrQb8I/AAAAAAAAA2E/i6uoOE_66pI/image_thumb%25255B8%25255D.png?imgmax=800" width="804" height="244" /></a></p> <p>Probieren wir mal ein einfaches UPDATE. </p> <p><a href="https://lh3.googleusercontent.com/-BJ8MMYXtdtE/V4-cb-vhfHI/AAAAAAAAA2I/uFlX771IuCg/s1600-h/image%25255B22%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-gOVU1blxK3M/V4-ccQqRRcI/AAAAAAAAA2M/BVxUuTcsOvk/image_thumb%25255B10%25255D.png?imgmax=800" width="404" height="217" /></a></p> <p>Ups, ja klar. Ein UPDATE muss ja auch lesen was es so löschen möchte. Also brauchen wir auch hier einen Isolation Level. </p> <p>Und schon funktioniert das UPDATE in Session 63. Als wir versuchen die selbe Zeile zu ändern, laufen wir in einen Fehler. In der pessimistischen Welt wären wir hier hängen geblieben. </p> <p><a href="https://lh3.googleusercontent.com/-Da_Q4c-WRNI/V4-ccmcxoEI/AAAAAAAAA2Q/5cGZCGvkYrs/s1600-h/image%25255B26%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-yYXH0fsJVBk/V4-ccz9snHI/AAAAAAAAA2U/d4CjAXdsvuk/image_thumb%25255B12%25255D.png?imgmax=800" width="804" height="234" /></a></p> <em><font color="#ff0000">Meldung 41302, Ebene 16, Status 110, Zeile 34 <br />The current transaction attempted to update a record that has been updated since this transaction started. The transaction was aborted.</font></em> <p>Wir lernen daraus, dass die SQL Server In-Memory OLTP Engine aufpasst, dass wir nichts überschreiben, was in einer anderen Session bereits geändert wurde. </p> <p>Bei einem DELETE hätten wir übrigens den gleichen Fehler erhalten.</p> <p>So, kommen wir zu einem INSERT. </p> <p>Erst machen wir in 63 ein INSERT mit der ID 4 und dann ein INSERT in 62 mit der ID 4. Und schon haben wir zwei Zeilen mit der identischen ID. Autsch. </p> <p><a href="https://lh3.googleusercontent.com/-Fyx9PAJv8hI/V4-cddcWsKI/AAAAAAAAA2Y/b1bKz_wXwEI/s1600-h/image%25255B30%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-IIQ1j7uAjrQ/V4-cd-KxJYI/AAAAAAAAA2c/r47pjU3YtUY/image_thumb%25255B14%25255D.png?imgmax=800" width="804" height="241" /></a></p> <p>Nun kommt es darauf an, wer zuerst ein COMMIT ausführt. </p> <p><a href="https://lh3.googleusercontent.com/-Okw5U4JDZ8E/V4-ceE50EtI/AAAAAAAAA2g/PfSZEH1nxTY/s1600-h/image%25255B94%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-fk4P_K3ydMk/V4-cetFHylI/AAAAAAAAA2k/5r4ZFis959k/image_thumb%25255B46%25255D.png?imgmax=800" width="804" height="291" /></a></p> <p>Und wir sehen, dass es nur einen geben konnte (Sorry…). Dennoch gab es einen Moment in der Vergangenheit, in dem mindestens zwei Wahrheiten existierten. Damit sollte der Entwickler umgehen lernen. </p> <p>Und wo wir gerade bei zwei Wahrheiten sind. Können wir unsere zwei Versionen einer Zeile jeweils auch ändern? </p> <p><a href="https://lh3.googleusercontent.com/-CDiAXlRSgsI/V4-ce4gFq4I/AAAAAAAAA2o/LcwO-y1zOfw/s1600-h/image%25255B34%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-zwrf4Jvd0nA/V4-cfOjrt1I/AAAAAAAAA2s/PSbCqna59AM/image_thumb%25255B16%25255D.png?imgmax=800" width="804" height="244" /></a></p> <p>Nein, das schlägt auch gleich fehl. </p> <p>Wie schaut es noch generell mit DELETES aus? </p> <p>Wir haben wieder zwei Sessions. Beide zeigen das gleiche Resultset. </p> <p><a href="https://lh3.googleusercontent.com/--HRzAu9JX68/V4-cfiL-zOI/AAAAAAAAA2w/4mi23_tzCzo/s1600-h/image%25255B38%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-ZepCidh_uqo/V4-cf7WVGXI/AAAAAAAAA20/QmWgeBJky-k/image_thumb%25255B18%25255D.png?imgmax=800" width="804" height="294" /></a></p> <p>Nach einem DELETE in 63 verschwindet dort unsere ID 4. In Session 62 ist diese aber noch dabei, da diese auf eine alte Version der Zeile zeigt. </p> <p><a href="https://lh3.googleusercontent.com/-gzybrP1lVFM/V4-cgTjzfmI/AAAAAAAAA24/EaRROSWP0ks/s1600-h/image%25255B42%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-8gBFWBRH_6k/V4-cgjSJ3lI/AAAAAAAAA28/yqT7gcRgTao/image_thumb%25255B20%25255D.png?imgmax=800" width="804" height="284" /></a></p> <p>Das bleibt so lange, wie die Session 62 ihre Transaktion nicht schließt. Ein COMMIT in 63 hilft da nicht weiter. </p> <p><a href="https://lh3.googleusercontent.com/-0fbaznnXs2w/V4-chAtGv0I/AAAAAAAAA3A/Odrwcbdmmr4/s1600-h/image%25255B46%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-YM9xGg7IJMg/V4-chS7-sRI/AAAAAAAAA3E/c4nXMdnXGtY/image_thumb%25255B22%25255D.png?imgmax=800" width="804" height="284" /></a></p> <p>Erst das Beenden der Transaktion in 62 zeigt auch hier die letzte wahrhaftige Wahrheit. Auch dessen sollte sich ein Entwickler bewusst sein. </p> <p><a href="https://lh3.googleusercontent.com/-Rnklc7jvc3k/V4-chruWI1I/AAAAAAAAA3I/ldqvfptKGBA/s1600-h/image%25255B50%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-GFQ-IqENpSs/V4-ciY6fNzI/AAAAAAAAA3M/Uzy1Xlv0iQ4/image_thumb%25255B24%25255D.png?imgmax=800" width="804" height="284" /></a></p> <p>Nun kommen wir zu den wirklich interessanten Dingen. Steigern wir den Isolation Level und gehen auf REPEATABLEREAD. Bitte dran denken, dass die Verwendung der höheren Level unter Last auch messbar wird! </p> <p>Wir starten wieder von vorne. In 63 öffnen wir eine Transaktion und lesen unsere Tabelle. In 62 führen wir ein UPDATE durch. Die Transaktion sparen wir uns, damit entfällt auch die Notwendigkeit für einen Table Hint. </p> <p><a href="https://lh3.googleusercontent.com/-7BijHPx2SIo/V4-ciluWt0I/AAAAAAAAA3Q/ad7YwX4ubsM/s1600-h/image%25255B54%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-qsDdwfHyx7Y/V4-ci9rb5bI/AAAAAAAAA3U/bzvJktYwt68/image_thumb%25255B26%25255D.png?imgmax=800" width="804" height="281" /></a></p> <p>Nun haben wir in 63 die alte Version und in 62 sehen wir schon die neue Version. </p> <p><a href="https://lh3.googleusercontent.com/-R10ZfOAEoNE/V4-cjdSwAuI/AAAAAAAAA3Y/3LJqNfr_AEs/s1600-h/image%25255B58%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-3h4vUjciLR4/V4-cjtnbvtI/AAAAAAAAA3c/UoNU_Bf5oRQ/image_thumb%25255B28%25255D.png?imgmax=800" width="804" height="291" /></a></p> <p>Unsere Transaktion liest im Step 21 aber fleißig wiederholt unsere Tabelle. Und bekommt den alten Stand geliefert.</p> <p><a href="https://lh3.googleusercontent.com/-KI9zDT6wVpo/V4-ckBIYyrI/AAAAAAAAA3g/yZ63S8ST-Ik/s1600-h/image%25255B62%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-J6j9eqaJMec/V4-ckTiqwDI/AAAAAAAAA3k/2KZfRZINRQE/image_thumb%25255B30%25255D.png?imgmax=800" width="804" height="287" /></a></p> <p>Und nun wird es unangenehm. Ein COMMIT in der Session 63 führt zu einem Fehler. Aber wir haben doch nur gelesen?! Warum? </p> <p>Weil die SQL Server In-Memory OLTP Engine ERST beim COMMIT eine Überprüfung durchführt, ob die ISOLATION LEVEL denn auch eingehalten worden sind. Wie schon erwähnt, kann also ein SELECT im Nachhinein fehlschlagen. Der Entwickler hat auf Basis der Daten gearbeitet, muss sich aber bewusst sein, dass er evtl. schon in einer alten Realität agierte und ihm sein Code um die Ohren fliegt. </p> <p><a href="https://lh3.googleusercontent.com/-r4FAzQf3Mcs/V4-cku-P25I/AAAAAAAAA3o/YNGfBZqG-3k/s1600-h/image%25255B74%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-3FCuN2EB-Ec/V4-clICr1QI/AAAAAAAAA3s/h_Gu-15KPtE/image_thumb%25255B36%25255D.png?imgmax=800" width="804" height="284" /></a></p> <p><font color="#ff0000"><em>Meldung 41305, Ebene 16, Status 0, Zeile 96 <br />The current transaction failed to commit due to a repeatable read validation failure.</em></font></p> <p><font color="#000000">Wie schaut es mit INSERTs und REPEATABLEREAD aus? Probieren wir das einfach mal aus. </font></p> <p>In 63 öffnen wir die Transaktion und schauen uns die Daten an. Dann schreiben wir in 62 eine neue Zeile, welche dort auch sichtbar ist.</p> <p>In Step 25 sehen wir, dass uns in 63 weiterhin die alte Version gezeigt wird.</p> <p><a href="https://lh3.googleusercontent.com/-zF9B8Qn-Q0w/V4-cldV6FAI/AAAAAAAAA3w/9HuFDpKHamw/s1600-h/image%25255B78%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-toSCtsYh8I4/V4-cl6Nc0sI/AAAAAAAAA30/-DRLLeMSnyQ/image_thumb%25255B38%25255D.png?imgmax=800" width="804" height="287" /></a></p> <p>Erst ein Schließen der Transaktion führt dazu, dass wir den aktuellen Stand sehen. INSERTs führen also NICHT zu Fehlern bei REPEATABLEREAD. Dafür können neue Zeilen unvermittelt erscheinen. </p> <p><a href="https://lh3.googleusercontent.com/-rnEOilgejoo/V4-cmHkMacI/AAAAAAAAA34/XMfTxBaVi5o/s1600-h/image%25255B82%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-yYA8coFfxGQ/V4-cmue7t0I/AAAAAAAAA38/NcINhUILlP8/image_thumb%25255B40%25255D.png?imgmax=800" width="804" height="287" /></a></p> <p>Auf zum nächsten Level. Alles noch mal, nun mit SERIALIZABLE. </p> <p>In 63 sehen wir unsere Daten und in 62 fügen wir eine Zeile hinzu. In Step 29 schauen wir mal wieder nach unseren Daten und sehen die Zeile nicht. </p> <p><a href="https://lh3.googleusercontent.com/-_2BAvSKUuM8/V4-cm6E5upI/AAAAAAAAA4A/08_JnkXmC8c/s1600-h/image%25255B86%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-Y8yTF-RO1Dw/V4-cnPFmjqI/AAAAAAAAA4E/oxbAGuSbZFs/image_thumb%25255B42%25255D.png?imgmax=800" width="804" height="281" /></a></p> <p>Erst das COMMIT in 63 zeigt, was dieser Isolation Level bewirkt. Er verhindert, dass im Lesebereich, der war hier jetzt ganz grob die ganze Tabelle, alte Versionen gelesen werden können und führt nach Ende der Transaktion zu einem Fehler. </p> <p>Wichtig, nicht das INSERT schlägt fehl, sondern das SELECT, welches in der Vergangenheit einen ungültigen Stand der Daten las. Nochmals, In-Memory OLTP prüft erst beim COMMIT, ob die Isolation Level eingehalten wurden!!!</p> <p><a href="https://lh3.googleusercontent.com/-cAj5wD1jNuI/V4-cnrx5CAI/AAAAAAAAA4I/TNkNcAORb5s/s1600-h/image%25255B90%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-uXQ7bvnkwhM/V4-cn8u07ZI/AAAAAAAAA4M/_GRrqO8QE_8/image_thumb%25255B44%25255D.png?imgmax=800" width="804" height="281" /></a></p> <p><font color="#ff0000"><em>Meldung 41325, Ebene 16, Status 0, Zeile 128 <br />The current transaction failed to commit due to a serializable validation failure.</em></font> </p> <p>Diese noch recht einfachen Beispiele zeigen schon sehr deutlich, dass existierender T-SQL Code in aller Regel gründlich überarbeitet werden muss für die Nutzung von In-Memory OLTP. Ja, das bedeutet Aufwand. Nur dieser ist meiner Erfahrung nach mehr als gerechtfertigt, wenn man den deutlichen Performance Gewinn für seine Lösung sieht. </p> <p>Ich habe bewusst unterwegs ein paar technische Details übersprungen, damit sich das Thema halbwegs zügig liest. Dieser Post ist nicht als Schulungsersatz für die Verwendung von In-Memory OLTP gedacht, sondern um bewusst zu machen, dass es da Arbeit gibt. </p> <p>Für viele Entwickler (und Entwicklerinnen…) mag sich nach dem Lesen dieses Posts In-Memory OLTP nun noch ein wenig schräger anfühlen als schon vorher, nur gerade aus den gezeigten Mechaniken zieht diese Engine ihre unglaubliche Geschwindigkeit. Probiert sie einfach mal aus! </p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-39526701194001149922016-06-30T13:45:00.001+02:002016-06-30T13:45:21.688+02:00SQL Server in-Memory OLTP – Ein Plädoyer für Lasttest Werkzeuge und End-to-End Monitoring<p>Im Rahmen einiger Proof-of-Concepts und Workshops für die <a href="http://saschalorenz.blogspot.com/2016/06/sql-server-2016-in-memory-oltp.html">in-Memory OLTP Engine des SQL Servers</a> habe ich die Erfahrung gemacht, dass selbst komplexe Eigenentwicklungen von Unternehmen häufig ohne Werkzeuge für realistische Lasttests auskommen müssen. </p> <p>Ziel der PoCs ist es zu evaluieren, ob das Investment in die Integration von SQL Server in-Memory OLTP überhaupt einen wirtschaftlich gerechtfertigten Vorteil mit sich bringt. Die einfache Frage im Raum ist häufig: Wird unsere Anwendung mittels in-Memory OLTP tatsächlich deutlich schneller? Die Voraussetzung für eine solche Überlegung ist natürlich, dass man entweder zurzeit mit der bestehenden Last zu langsam unterwegs ist oder für die Zukunft mit wesentlich mehr Last rechnet und davon ausgeht, dass diese zu Problemen führen wird. </p> <p>Die wenigsten Kunden nutzen zurzeit die in-Memory OLTP Engine des SQL Servers für eine komplette Neuentwicklung auf der grünen Wiese. Wobei, wer als ISV oder Entwicklungsleiter schon länger eine Neuentwicklung im Auge hatte, dann ist der SQL Server 2016 ein guter Grund nun endlich damit zu beginnen. Die Implementierung von in-Memory OLTP in eine bereits produktive Anwendung ist immer mit Aufwand verbunden. Dieser besteht i.d.R. aus Lizenzkosten (Enterprise Edition, sofern nicht eh schon gesetzt) und natürlich Aufwand für die Anpassung der Anwendung. In-Memory OLTP basiert ja u.a. auf einem Versionstore und damit einem optimistischen Konzept hinsichtlich von Änderungen an den Daten. Daher müssen die Entwickler häufig diesbezüglich erst geschult und gecoacht werden.</p> <p>Nur lohnt sich dieser Aufwand auch wirklich? Dann kommt oft noch die Definitionsrunde, was denn nun eigentlich mit schneller gemeint ist. Nur oft kann diese Frage gar nicht in der ersten Runde seriös und abschließend geklärt werden, da Werkzeuge fehlen, um eine realistische Last auf einem Testsystem zu erzeugen. </p> <p>Die Funktionsweise von in-Memory OLTP selbst kann ich mittlerweile sehr gut demonstrieren mit Open Source Werkzeugen und meinen eigenen Beispielszenarien. Nur hat sowas ja nichts zu tun mit der Last eines selbst entwickelten Webshops oder einer angepassten ERP Umgebung. Ohne Tests sind Aussagen über mögliche Verbesserungen reine Kaffeesatzleserei. </p> <p>Der Verzicht auf die Entwicklung von Lasttest Werkzeugen und ein End-to-End Monitoring sind aus meiner Sicht eindeutig technische Schulden. Natürlich kann ich nachvollziehen, dass das unglaublich unattraktive Stories sind und gerade hier gerne am Ende eines Projektes Budget gespart wird. </p> <p>Der Lasttest wird ersetzt durch ein generisches Monitoring des SQL Servers (wenn überhaupt…) und das End-to-End Monitoring ergibt sich durch den Durchschnitt der Tickets mit dem Label “Performance”. </p> <p>Mir ist es ein Rätsel, wie ohne Lasttests eine Anwendung überhaupt hinsichtlich irgendwelcher Seiteneffekte durch mehrere Anwender getestet werden konnte. Wobei damit dann häufig auch deutlich wird, warum man überhaupt vor Ort ist, um diese zu tunen bzw. warum sich da jemand Vorteile durch die in-Memory Engine verspricht. </p> <p>Ähnliches gilt für das End-to-End Monitoring. Die vorhandenen SLAs beschränken sich zumeist auf RTO & RPO. Kennzahlen darüber hinaus sind nicht definiert und “Effekte” im Frontenderlebnis nicht nachvollziehbar. </p> <p>Daher meine Bitte an Alle: Implementiert Lasttests, welche auch weiter entwickelt werden mit der Anwendung, und gleich dazu noch ein End-to-End Monitoring drauf, damit evtl. Effekte frühzeitig bemerkt werden können. </p> <p>Natürlich wäre dann auch der Beweis, dass in-Memory OLTP genau diesen Workload beschleunigt wesentlich einfacher zu erbringen und mit weniger Aufwand möglich. So verbringe ich nicht unwesentlich viel Zeit in den PoCs und entwickle rudimentäre Lasttests, um den Budgetverantwortlichen zumindest eine grobe Einschätzung der Möglichkeiten liefern zu können. </p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-76174998987436461512016-06-16T07:48:00.001+02:002016-06-16T07:48:33.568+02:00SQL Server 2016 - in-Memory OLTP<p>Die letzten Monate habe ich recht viel Zeit damit verbraucht Kunden im Rahmen von Workshops, PoCs und Projekten das Thema in-Memory OLTP und unsere Erfahrungen damit im SQL Server 2014 und SQL Server 2016 näher zu bringen. Bekannt wurde das Feature ja vor einiger Zeit als Projekt “Hekaton” für den SQL Server 2012.</p> <p>Seinerzeit war das Interesse bei den Kunden sehr verhalten. Sowohl Endkunden als auch ISVs haben das Thema zwar wahrgenommen, aber da es ja erst mit 2014 realisierbar war, führte dieses bei den meisten zu einer “Das ist etwas für später…”-Meinung. Wenige haben für sich das Potenzial von in-Memory OLTP erkannt. </p> <p>Das letzte halbe Jahr hat sich dieses geändert. Mit der Sichtbarkeit des Commitments von Microsoft in diese Technologie, von einem Feature mag ich da gar nicht mehr sprechen wollen, wurde vielen Nutzern des SQL Servers klar, dass sich das Spiel ändern wird bzw. eigentlich schon geändert hatte. </p> <p>Nun, im SQL Server 2016, durch die Kombination von Technologien (Columnstore Index und in-Memory OLTP) zu Operational Analytics ist der Umfang der Änderungen bzw. Erweiterungen an der Architektur der SQL Server Engine deutlich sichtbarer geworden. Marketing ist halt doch alles. Hier mal ein gutes Beispiel.</p> <p>Und für viele ist damit nun ein Wettbewerbsvorteil möglich, welchen man nicht mehr ignorieren kann. </p> <p>Was machen wir da draußen schon mit in-Memory OLTP? </p> <p>In den Workshops und PoCs erfahren und erleben die Kunden, wie leicht es geworden ist eine für sie bisher unvorstellbare Geschwindigkeit ihres Workloads auf ihrer bestehenden Hardware zu realisieren. Und ja, es ist kein “ein-und-läuft”-Feature. Viele Kunden entwickeln mittlerweile ihre LoB Systeme zum Teil selber und sind sehr darauf bedacht sich am Ende keinen Flaschenhals bei der Datenbank einzubauen.</p> <p>In Projekten werden meist partiell Tabellen vom sogenannten “disk-based” Modell übertragen in die in-Memory Welt. Dabei sind häufig gar nicht die eigentliche Tabelle und die neuen Formen der Indizierung die Herausforderung, sondern ist eher die intellektuelle Hürde, dass nun mit einem Versionstore gearbeitet wird und sich die Isolationslevel ein wenig anders anfühlen. Hilft ja alles nichts. Da kommt ja auch ein wesentlicher Teil der Geschwindigkeit her. </p> <p>Des Weiteren leiten wir Teams an sich dieser Technologie kreativ zu nähern. Zwar steht ja OLTP drauf, aber das heißt ja nichts. Gerade mit der Möglichkeit auf die “Durability” bewusst zu verzichten, können ganz besondere Number Cruncher in T-SQL entstehen. Besonders, wenn der T-SQL Code dann auch kompiliert werden konnte. </p> <p>Und wir bringen in-Memory OLTP in Produktion. Das ist nicht immer ganz einfach, da bei dieser spezialisierten Engine ein wenig von der Flexibilität des SQL Servers abhanden kam. Dieses ist aber meist verkraftbar, wenn man sich die Vorteile vor Augen führt. Speziell Deployment Szenarien beim rund-um-die-Uhr-Betrieb können dabei Herausforderungen sein, welchen man bereits in der Designphase einer Lösung begegnen muss. Wobei, DevOps lässt hier grüßen. Und wer schon mal mit unseren Entwicklern in Berührung gekommen ist, kennt unsere repository-driven Ansätze für größere Umgebungen. </p> <p>Resümee von mir: in-Memory OLTP lebt! </p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-11741462481342071952016-06-09T12:45:00.001+02:002016-06-09T12:45:28.994+02:00SQL Server Missing Indexes Feature – Vorsicht!<p>Dieser kurze Post richtet sich primär an DBAs und Entwickler, welche vielleicht gerade damit begonnen haben sich mit dem Themen SQL Server, Performance Optimierung usw. zu beschäftigen. </p> <p>Vielen dürfte das Missing Index Feature bekannt sein. Der Query Plan wird bei der Kompilierung durch den Query Optimizer um einen Index Vorschlag angereichert. </p> <p><a title="https://technet.microsoft.com/en-us/library/ms345417(v=sql.105).aspx" href="https://technet.microsoft.com/en-us/library/ms345417(v=sql.105).aspx">https://technet.microsoft.com/en-us/library/ms345417(v=sql.105).aspx</a> </p> <p>Dieser Vorschlag wird auch prominent im Management Studio dargestellt. </p> <p><a href="https://lh3.googleusercontent.com/-fYsR_mshNic/V1lIx3bhOTI/AAAAAAAAA1I/3AetgkuI-o4/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-9KgQ_-T-7kk/V1lIyLO2iXI/AAAAAAAAA1Q/YnowOydFjC4/image_thumb%25255B1%25255D.png?imgmax=800" width="615" height="136" /></a></p> <p>Diese “Empfehlungen” entstehen im Bruchteil einer Sekunde beim Kompilieren eines SQL Statements. Und beziehen sich einzig allein das eine Statement bzw. die eine Prozedur. Schauen also nicht nach links und rechts. </p> <p>Ich sehe in ihnen eher den plakativen Hinweis, dass selbst dem Query Optimizer in der Kürze der Zeit aufgefallen ist, dass es deutliches Potenzial gibt. Mehr sollte es nicht sein. </p> <p>Also nicht jeden Vorschlag unreflektiert umsetzen! Ist ja eigentlich klar, oder?</p> <p>Nun durfte ich bei einem Kunden die Erfahrung machen, dass im Internet (es ist doch böse, wusste es immer…) Skripte zu finden gibt, welche den Plancache des SQL Server für eine komplette Instanz auslesen, die Missing Indexes Informationen extrahieren und automatisch ALLE Empfehlungen umsetzen. Es werden also in allen Datenbanken einer Instanz ungeprüft neue Indexe erzeugt.</p> <p>Das mag auf den aller ersten Blick ja eine super Idee sein, nur so hat selbst Microsoft dieses Feature nicht gemeint. Viel hilft nicht immer viel…</p> <p>Indexe, speziell sogenannte abdeckende Indexe, sind eine gewollte Form der Redundanz von Daten. Es wird also Speicher belegt und Indexe müssen auch bei Schreibvorgängen gepflegt werden. Speziell komplexere Systeme wie zum Beispiel ein SharePoint mögen so etwas gar nicht. </p> <p>Bei diesem Kunden führte eine solche “Maßnahme” dazu, dass quasi alle Anwendungen danach deutlich langsamer liefen als vorher. Von dem plötzlichen Wachstum um 2/3 auf dem Storage ganz zu schweigen. </p> <p>Ich verzichte bewusst auf eine Verlinkung zu den Skripten, um diese nicht noch relevanter zum Thema erscheinen zu lassen. </p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-50432359209819907032016-06-03T16:04:00.001+02:002016-06-03T16:04:42.662+02:00SQL Server 2016 – Business Intelligence Edition?<p>Nachdem nun der SQL Server 2016 verfügbar ist, schauen Kunden der SQL Server 2014 Business Intelligence Edition ein wenig ungläubig drein. Die BI Edition gibt es nicht mehr. Habe mir dazu die Hinweise auf der Lizenzierungsseite von Microsoft angeschaut. </p> <p>Hier der O-Ton aus dem <a href="http://download.microsoft.com/download/9/C/6/9C6EB70A-8D52-48F4-9F04-08970411B7A3/SQL_Server_2016_Licensing_Guide_EN_US.pdf">Licensing Guide für SQL 2016</a>:</p> <p><em><strong>For SQL Server Business Intelligence Edition Licenses with Software Assurance</strong> </em></p> <p><em>SQL Server 2014 was the last version of the SQL Server Business Intelligence Edition. Customers with active SA coverage on qualifying Business Intelligence Edition server licenses on June 1, 2016 are eligible to upgrade to and use SQL Server 2016 Enterprise (Server+CAL) software with those licenses.</em></p> <p><em>During the current term of SA coverage (effective on or before June 1, 2016), customers who are licensing SQL Server 2014 Business Intelligence Edition can, for a given deployment, upgrade to and use the SQL Server 2016 Enterprise Edition (Server+CAL) software in place of the licensed SQL Server 2014 edition. Note: Customers who upgrade to SQL Server 2016 software are subject to current version Enterprise Edition server license product terms. </em></p> <p><em>Customers with Enterprise Agreements effective on or before June 1, 2016 can continue to acquire additional SQL Server 2014 Business Intelligence server licenses—and upgrade those licenses to SQL Server 2016—through the end of their current enrollment term, as long as the number of new licenses acquired does not exceed more than 25% of the number of qualifying licenses acquired as of May 1, 2016. </em></p> <p><em>After their current term expires, SA coverage can be renewed and maintained on SQL Server Enterprise Edition server licenses to provide continued access to SA benefits, including License Mobility rights, Failover Server rights, and access to future releases. </em></p> <p>Denke mal, dass das fair klingt, oder?</p> <p><strong>Wie immer sind alle Lizenzierungshinweise hier von mir ohne jegliche Gewähr!</strong></p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-43156312796908778562016-06-02T12:50:00.001+02:002016-06-02T12:50:38.959+02:00SQL Server 2016 ist verfügbar – Was ist in welcher Edition?<p>SQL Server 2016 ist verfügbar. *jubel* </p> <p>Selten wurde eine Version so von mir intensiv im Vorfeld verfolgt, weil sie gefühlt für jeden etwas spannendes Neues dabei hat. </p> <p>Kommen wir zur Frage, welche Features haben es ins Release bzw. in welche Edition (Standard oder Enterprise) geschafft?</p> <p>Zwar habe ich aufgrund meiner Kommunikation mit Microsoft als MVP und durch die weltweite SQL Community vor dem Release Einiges erfahren. Dieser Artikel geht aber bewusst unbefangen an das Thema und nimmt einzig und allein die offizielle Microsoft Seite dazu als Quelle. </p> <p><a title="https://msdn.microsoft.com/en-us/library/cc645993.aspx" href="https://msdn.microsoft.com/en-us/library/cc645993.aspx">https://msdn.microsoft.com/en-us/library/cc645993.aspx</a> (Stand 02.06.2016)</p> <p>Blättern wir also mal gemeinsam durch die Liste. Was fällt als Erstes auf? Wo ist die BI Edition hin? </p> <p><a href="https://lh3.googleusercontent.com/-7RZxx8LzglE/V1APblA4YxI/AAAAAAAAA0Q/yAivV4454I8/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-d3RUS7rPkVg/V1APb2jsfLI/AAAAAAAAA0U/3x8qMrEw-8Y/image_thumb%25255B1%25255D.png?imgmax=800" width="716" height="84" /></a></p> <p>Ein kurzer Blick auf die 2014 Version des oben genannten Links zeigt diese noch:</p> <p><a href="https://lh3.googleusercontent.com/-_rf4oraeJ28/V1APcCQA2xI/AAAAAAAAA0Y/-cWK0HwznD8/s1600-h/image%25255B9%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-Ietc5WAFhiU/V1APcpv8IvI/AAAAAAAAA0c/Rs4dBH8KE7Q/image_thumb%25255B5%25255D.png?imgmax=800" width="725" height="91" /></a></p> <p>Das könnte evtl. zu Unruhe im Feld führen. </p> <p><strong>Abschnitt “Cross-Box Scale Limits”</strong></p> <p>Ein Blick auf “Maximum Compute Capacity” zeigt, dass die Standard Edition 2016 nun “Limited to lesser of 4 sockets or 24 cores” statt wie bei der 2014 “Limited to lesser of 4 Sockets or 16 cores” nutzen kann. Könnte sich als nützlich erweisen. </p> <p>Nun wird es aber gleich richtig spannend:</p> <p><a href="https://lh3.googleusercontent.com/-5PaN95QGSfM/V1APc0D6AkI/AAAAAAAAA0g/qvVx74m1ERI/s1600-h/image%25255B13%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-AQ6JU766uEA/V1APdE2ci0I/AAAAAAAAA0k/WN85C4WUBwg/image_thumb%25255B7%25255D.png?imgmax=800" width="353" height="107" /></a></p> <p>Die Standard Edition der SQL Server Analysis Services (SSAS) unterstützt nun auch Tabular als Modell, wenn auch “nur” für 16 GB. Das ist sehr schön und war auch meiner Sicht auch schon ein wenig überfällig. Guter Zug, Microsoft!</p> <p>Immer wieder schön zu lesen, dass die maximale Datenbank Größe 524 PB ist. Aber das nur am Rande. </p> <p><strong>Abschnitt “RDBMS High Availability”</strong></p> <p>Auf den ersten Blick keine Änderungen. Wobei mir mal so war, als sollten die Verfügbarkeitsgruppen in abgespeckter Form auch für die Standard Edition kommen. Das behalte ich mal im Auge und recherchiere dazu ein wenig nach. </p> <p><strong>Abschnitt “RDBMS Scalability and Performance”</strong></p> <p>Okay, dass es “Operational analytics” nicht in die Standard schafft, war klar, da sich hier ja sowohl “In-Memory Column Store” als auch “In Memory OLTP” die Hand geben. Dennoch, cooler Kram ist!</p> <p>Und eine kleine Überraschung, dass es die “Stretch Database” in die Standard geschafft hat. Wobei, kurz drauf rum denken, macht Sinn, da es sich hier um den Einstieg in die Azure Welt für die SQL Server Kunden handelt. Nützliches Feature auf jeden Fall.</p> <p>Und wo wir hier gerade sind, wem “Delayed Durability” noch Nichts sagt, mal nachlesen. Kann SEHR nützlich sein, wenn man sich bewusst ist, was man da tut. </p> <p><strong>Abschnitt “RDBMS Security”</strong></p> <p>Jetzt wird es schon wieder aufregend. Sowohl “Row-level security” als auch “Dynamic data masking” haben es in die Standard Edition geschafft. Wieder ein guter Zug. Dass es “Always Encrypted” nur für Enterprise gibt, nun ja, ist doch eigentlich auch ein Cloud Treiber, oder? </p> <p><strong>Abschnitt “Replication”</strong></p> <p>Noch ein Cloud Feature ist “Transactional replication to Azure”. Gibt es auch für Alle. </p> <p><strong>Abschnitt “Management Tools”</strong></p> <p>Da ist mir Nichts aufgefallen. </p> <p><strong>Abschnitt “Manageability”</strong></p> <p>Wieder Nichts. Vielleicht brauche ich auch nur einen weiteren Kaffee…</p> <p><strong>Abschnitt “Development Tools”</strong></p> <p>Bin mal kurz in der Teeküche. Wieder Nichts.</p> <p><strong>Abschnitt “Programmability”</strong></p> <p>Jetzt wird es ja richtig cool. Okay, Kaffee hilft halt immer.</p> <p><a href="https://lh3.googleusercontent.com/-hcxmfFWGxGQ/V1APeNcMtuI/AAAAAAAAA0o/bu1t2t_3RGQ/s1600-h/image%25255B18%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-v2JX27MJq78/V1APfHche5I/AAAAAAAAA0s/AXjtYwYvGbo/image_thumb%25255B10%25255D.png?imgmax=800" width="362" height="406" /></a></p> <p>Denke mal, dass dieses Bild für sich spricht, oder? Was ist denn jetzt eigentlich der Unterschied zwischen Basic und Advanced R ist, werde ich noch mit meinem Kollegen <a href="http://minceddata.blogspot.de/">Tom Martens</a> bei Gelegenheit näher erklären. </p> <p>JSON, yeah…</p> <p>Query Store, wow…</p> <p>Temporal, Hammer… (und dann noch Strech…)</p> <p>Microsoft, da habt ihr ja mal alles richtig gemacht!</p> <p><strong>Abschnitt “Integration Services”</strong></p> <p><a href="https://lh3.googleusercontent.com/-oh9NgkOFIXE/V1APfFUZ1mI/AAAAAAAAA0w/L7JV7wpYUlY/s1600-h/image%25255B22%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://lh3.googleusercontent.com/-QH0nv3LMFu0/V1APfhBV1WI/AAAAAAAAA00/EPHuH0RYIuA/image_thumb%25255B12%25255D.png?imgmax=800" width="360" height="123" /></a></p> <p>Azure, Hadoop und HDFS. Schön, machst rund. </p> <p><strong>Abschnitt “Integration Services – Advanced Adapters”</strong></p> <p>Okay, da ist Name halt Programm. Mach ja auch Sinn. </p> <p><strong>Abschnitt “Integration Services – Advanced Transformations”</strong></p> <p>Okay, halt auch was für den größeren Geldbeutel. Wobei, da hätte ich mir auch mal etwas Neues gewünscht. </p> <p><strong>Abschnitt “Master Data Services”</strong></p> <p>Gibst weiterhin nur in der Enterprise Edition. Hat ja auch diverse Neuerungen erfahren. Es lebt zumindest. </p> <p><strong>Abschnitt “Data Warehouse”</strong></p> <p>Hat sich Nichts geändert.</p> <p><strong>Abschnitt “Analysis Services”</strong></p> <p>Nichts Neues.</p> <p><strong>Abschnitt “BI Semantic Model (Multidimensional)”</strong></p> <p>Auch hier nichts Neues.</p> <p><strong>Abschnitt “BI Semantic Model (Tabular)”</strong></p> <p>Jetzt aber, Tabular im Standard. Aber…</p> <p>Keine Perspektiven, Partitionen und kein DirectQuery (Mist…). Wobei, dennoch ein guter Schritt. </p> <p><strong>Abschnitt “Power Pivot für SharePoint”</strong></p> <p>Alles weiterhin nur für die Enterprise Edition. Interessant wie sich der Teil weiter entwickeln wird, dank PowerBI.</p> <p><strong>Abschnitt “Data Mining”</strong></p> <p>Weiterhin gehen die Basics mit der Standard, der Rest mit der Enterprise. Hat da jemand gerade R gesagt? </p> <p><strong>Abschnitt “Reporting Services”</strong></p> <p>Nun gut, Mobile Reports, sprich das Datazen Universum, gibt es nur für die Enterprise. Damit war aber auch zu rechnen. </p> <p><strong>Abschnitt “Bussines Intelligence Clients”</strong></p> <p>Dieser Abschnitt ist nach wie vor ein wenig verwirrend. Klar, dass die Clients für mobile Reporting auch nur mittels der Enterprise Edition genutzt werden können. </p> <p>Das mit PowerBI hätte man geschickter formulieren können, sonst denkt noch jemand, dass man dafür zwingend einen SQL Server Enterprise Edition bräuchte. Was natürlich nicht so ist. Das geht auch ganz ohne SQL Server und macht dennoch Spaß. Das sage ich nicht von Vielem! </p> <p><strong>Abschnitt “Spatial und Location Services”</strong></p> <p>Alles bleibt wie es war. </p> <p><strong>Abschnitt “Additional Database Services”</strong></p> <p>Nichts Neues.</p> <p><strong>Abschnitt “Other Components”</strong></p> <p>Schade, dass man hier ganz hinten im Bus “Data Quality Services” und “StreamInsight” findet. Hätte mir für beide Technologien mehr gewünscht. Zumindest sind sie noch dabei. Inwiefern der Einsatz für die breite Masse Sinn macht, sei dahin gestellt. </p> <p>Und schon sind wir durch. In Summe hat Microsoft die Standard Edition aufgewertet und vieles von dem coolem Kram nicht nur in der Enterprise gelassen.</p> <p><strong>Natürlich sind alle Angaben in diesem Artikel unverbindlich und ohne Gewähr !</strong></p>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-59698915812749828382015-11-04T13:44:00.003+01:002015-11-04T13:46:11.652+01:00SQL Server 2016 "R" in Reporting Services zur Implementierung eines IBCS Charts<span style="font-family: "arial" , "helvetica" , sans-serif;">Heute möchte ich kurz auf einen Post meines <a href="http://www.psg.de/" target="_blank">PSG</a> Kollegen Thomas Martens (kurz Tom) hinweisen:</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Er ist u.a. Experte für die <a href="https://de.wikipedia.org/wiki/R_(Programmiersprache)" target="_blank">Sprache “R”</a> und beschäftigt sich schon einige Jahre mit
diversen Implementierungen von fortgeschrittenen Algorithmen. Um so erfreuter
war er, als bekannt wurde, dass Microsoft in dem kommenden SQL Server 2016 “R”
integrieren wird.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Neben der Nutzung von “R” für komplexe finanzmathematische und statistische
Herausforderungen ist ein weiteres Steckenpferd vom Tom die Entwicklung von
individuellen Visualisierungen mittels des “R”-Paketes GGPLOT2.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Daher hat er es sich nicht nehmen lassen quasi Stunden nach der Verfügbarkeit
des CTP 3 ein erstes Beispiel in seinem Blog zu posten.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<a href="https://minceddata.wordpress.com/2015/11/03/they-walk-in-line-sql-server-2016-reporting-services-and-r-charting-using-ggplot2-2/" title="https://minceddata.wordpress.com/2015/11/03/they-walk-in-line-sql-server-2016-reporting-services-and-r-charting-using-ggplot2-2/"><span style="font-family: "arial" , "helvetica" , sans-serif;">https://minceddata.wordpress.com/2015/11/03/they-walk-in-line-sql-server-2016-reporting-services-and-r-charting-using-ggplot2-2/</span></a><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Dabei handelt es sich einfach gesagt um einen SSRS Report, welcher mittels
eines “R”-Skriptes Daten aus einer SQL Server Tabelle und SSRS Parameter nutzt,
um dann mit GGPLOT2 eine Umsetzung eines IBCS Charts live zu rendern. </span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Das eröffnet der Nutzung des SQL Servers und der Reporting Services ganz neue
Dimensionen</span>!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://minceddata.files.wordpress.com/2015/11/h11.gif?w=300&h=152" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://minceddata.files.wordpress.com/2015/11/h11.gif?w=300&h=152" /></a></div>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Tom scharrt schon mit den Füssen, weil “R” auch für seinen Liebling Power BI
angekündigt wurde. Ich bin gespannt.</span>Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-68686495307368615252015-03-24T12:31:00.001+01:002015-03-24T12:31:20.613+01:00Data Vault in der SQL Server Data Warehouse Welt<p>Meine Session auf der <a href="http://www.sqlkonferenz.de/">SQL Server Konferenz 2015 in Darmstadt</a> zeigte mir, dass das Thema <a href="http://en.wikipedia.org/wiki/Data_Vault_Modeling">Data Vault</a> durchaus polarisiert. Und da ich bei immer mehr Kundensituationen von uns auf Interesse zum Thema Data Vault treffe bzw. auch schon erste Architekturen vorfinde, möchte ich hier mal wieder ein paar Worte zu meiner Sicht der Lage äußern. </p> <p>Meinem Verständnis nach brachte die Diskussion der letzten Monate um die Vor- bzw. Nachteile des Einsatzes der Data Vault Modellierung einen notwendigen frischen Wind in die Data Warehouse Welt. Und zwar jenseits des allgemeinen Big Data Hypes. </p> <p>Data Vault kann durchaus als eine besondere Form des Stagings verstanden werden, wobei ich DV eher als einen Ansatz für die Modellierung eines Core Data Warehouses verstanden habe. Des Weiteren stellt Data Vault die rohen, unveränderten Daten in den Vordergrund. Die Idee dahinter ist, dass es keine einheitliche Wahrheit in einem Data Warehouse geben kann. Diese “Wahrheit” ist häufig durch eine Interpretation geprägt. Gerade die Suche nach der vermeintlich vorhanden Wahrheit in den Daten lässt viele Data Warehouse und Business Intelligence Projekte scheitern oder zumindest in Schönheit sterben. </p> <p>Inwieweit passt nun die Data Vault Modellierung (& Nutzung) in die Microsoft Welt?</p> <p>Das klassische Data Warehouse basiert auf relationalen Datenbanken. Die Bewirtschaftung mittels ETL- oder ELT-Strecke erfolgt meist mit einem Mix von SSIS und T-SQL Komponenten. Im Übrigen liegen häufig gerade in der Konzeptionierung der Strecke viele zukünftige (und zum Teil versteckte und damit nicht wahrgenommene) technische Schulden. </p> <p>Eine bekannte Herausforderung bei DWH Projekten ist, dass sich diese häufig nicht wirklich eignen für agile Projektstrukturen. Auf der anderen Seite sterben viele DWH Projekte gerade wegen den sonst häufig starren Steuerungsstrukturen einen grausamen und meist auch teuren Tod. Es gibt mittlerweile eine Reihe von valide Ansätze den agilen Ansatz in die Data Warehouse Welt zu tragen, dennoch empfinde ich viele Ansätze, welche ich so vorfinde, als eher einen agil geprägten Projektverlauf, sprich völliges Chaos. </p> <p>Data Vault kann tatsächlich mehr Agilität in DWH Projekte bringen. Ein Grundsatz im DV ist, dass es nur zusätzliche Objekte geben kann und keine Änderungen an bestehenden Strukturen durchgeführt werden. Durch diese und andere klare Regeln ist die Modellierung eines Data Vault erstaunlich stringent und passt sich dennoch dem unruhigen Fahrwasser im Datengeschäft an.  </p> <p>Wichtig ist es dennoch nochmals hervorzuheben, dass ein Data Vault eben gerade <u>nicht</u> die traditionellen Data Warehouse Modellierungsmethoden ablösen will oder sollte. Meinem Verständnis nach ist es eine sinnvolle Ergänzung einer DWH Architektur. Primär wird sie von mir genutzt, um Quellen zu harmonisieren und ihre Strukturen homogen zu gestalten. Das vereinfacht die weitere Nutzung dieser Daten in der DWH Strecke ungemein. Gerade im Kontext Verarbeitung von Daten in Echtzeit kann diese Investition helfen. </p> <p>Braucht nun wirkliches jedes (neue) Data Warehouse ein Data Vault? Eher nicht. Es kommt wie so häufig mal wieder drauf an. </p> <p>Für mich ist der Grad an Stabilität eines geplanten Data Warehouses entscheidend. Inwiefern werden die Quellen als auch die Anforderungen stabil bleiben oder ist mit diversen Erweiterungen und Änderungen zu rechnen? Sofern diese Frage nicht beantwortet werden können oder die Antwort nicht belastbar genug ist, empfehle ich den Einsatz eines Data Vaults, um ein wenig Ruhe in die Strukturen zu bekommen. </p> <p>In Abgrenzung zu klassischen DWH Modellierungen liefert das Data Vault Konzept auch Muster für die Bewirtschaftung mit. Unter anderem ist die Wiederholbarkeit von Bewirtschaftungsjobs möglich ohne sich mit der Herausforderung von möglichen Dubletten beschäftigen zu müssen. Wer sich schon länger mit DWH Umgebungen beschäftigt, weiß diese Eigenschaft durchaus schätzen zu lernen.  </p> <p>Wenn wir kurz noch gedanklich in der SQL Server Welt bleiben, stellen sich natürlich Fragen, wie denn nun ein Data Vault zum Beispiel mittels der Analysis Services genutzt werden können. Diese erwarten ja einen klassischen Stern als Quelle. Meiner Erfahrung nach nutzen hier viele Anwender zurzeit die Option den Zugriff direkt mittels Views zu realisieren. Mit einer solchen Architektur bin ich nicht immer einverstanden, da ich gerade bei größeren Cubes hier durchaus Probleme bei der Verarbeitung erlebt habe. Häufig wird das Persistieren des Data Mart für einen Würfel als zu umständlich und zeitraubend angesehen. Es gilt noch belastbare Konzepte durch Lab Arbeit und Projekt Erfahrung zu sammeln, um diese Frage zufriedenstellend beantworten zu können. </p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-17990372758944173882015-02-06T15:21:00.001+01:002015-02-06T15:21:18.077+01:00Data Vault in der Praxis Vortrag von der SQL Server Konferenz 2015 in Darmstadt<p>Hier meine Folien zum Data Vault Vortrag. </p> <p>Vielen Dank an die vielen Teilnehmer!</p> <p><iframe style="height: 400px; width: 676px" height="400" marginheight="0" src="//www.slideshare.net/slideshow/embed_code/44350946" frameborder="0" width="476" marginwidth="0" scrolling="no"></iframe></p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-37124038749724637272014-12-09T14:12:00.001+01:002014-12-09T14:12:08.061+01:0010 Jahre SQL Server Usergroup in Hamburg – PASS Deutschland e.V. feiert !<p><b>Hallo PASS’ler im Norden, <br /></b><b> <br />hiermit möchten wir zu einem besonderen Treffen der Regionalgruppe Hamburg einladen!</b></p> <p>Es gibt etwas zu feiern! Die PASS Deutschland besteht seit <b>10 Jahren</b>, im Oktober haben wir uns in der Regionalgruppe zum <b>100. Mal</b> getroffen und wir wollen mit Euch gemeinsam das Jahr gemütlich ausklingen lassen. Deswegen gibt es <b>leckeres Essen</b> und eine Verlosung von <b>Überraschungspreisen</b>.</p> <p>Bitte bringt gern <b>Kollegen und Freunde</b> mit, die sich auch mit dem SQL Server beschäftigen. Wir freuen uns auf Euch!</p> <p><b>Donnerstag</b><b>, 11. Dezember 2014, <br /></b><b>18:00 Uhr bis ca. 20:30 Uhr, <br />(Vortrag beginnt ab 18:30 und geht bis ca. 20:30 Uhr, davor sorgen wir dafür, dass ihr nicht verhungert…)</b></p> <p><b></b></p> <p><b>in der <u>MICROSOFT</u> Niederlassung Hamburg (Adresse unten)</b><b> </b></p> <p><strong>Thema: SQL Server Data Tools für Datenbankentwickler von Peter Horst <br /></strong>”Wir werden das Entwickeln von Datenbankanwendungen mit den Microsoft SQL Server Data Tools kennenlernen. Themen wie Delta-Deployment auf unterschiedliche Datenbankschemaversionen, Refactoring, Code-Analyse & Datenbank Unit Test werden nicht fehlen.”</p> <p><b>Wir treffen uns bei: <br /></b><b>Microsoft Deutschland GmbH <br />Geschäftsstelle Hamburg <br />Gasstraße 6a <br />22761 Hamburg <br /></b> <br /><b>Kostenlose Parkplätze</b> befinden sich hinter dem Gebäude. Der <b>Parkplatz</b> ist <br />über die Rampe mit dem Schild "Microsoft Kunden" erreichbar. <br /> <br />Nur wenige Minuten zu Fuß ist der <b>S-Bahnhof Bahrenfeld</b> entfernt (S1/S11). <br /> <br />Ansprechpartner vor Ort: MS Empfangs-Team, Cornelia Matthesius und Sascha Lorenz. <br /> <br />Wir bitten um eine vorherige Anmeldung per Email an: <a href="mailto:slo@sqlpass.de">slo@sqlpass.de</a> <br /> <br />Wichtig: Wir benötigen die Anmeldungen 2 Tage vor dem Treffen, da wir uns <br />2014 bei Microsoft treffen können und dort Besucherausweise ausgestellt <br />werden! Spontane Teilnehmer sind dennoch willkommen. ;-)</p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-90279659630705864202014-12-09T10:37:00.001+01:002014-12-09T10:37:42.678+01:00Power BI - SQL Server Konferenz 2015<p><a href="http://www.sqlkonferenz.de/"><img title="120x600_SQL_Server_Konferenz7[4][4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 20px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="120x600_SQL_Server_Konferenz7[4][4]" src="http://lh6.ggpht.com/-X8BPBJ8-Ojw/VIbC5L9LfFI/AAAAAAAAAyY/m4RIMmycUCE/120x600_SQL_Server_Konferenz7%25255B4%25255D%25255B4%25255D%25255B2%25255D.jpg?imgmax=800" width="102" align="left" height="493" /></a>Wie ich auch schon in <a href="http://saschalorenz.blogspot.com/2014/11/sql-server-konferenz-2015-im-speaking.html">diesem Blogpost</a> angemerkt habe, ist die kommende <a href="http://www.sqlkonferenz.de/">SQL Server Konferenz</a> in Darmstadt <strong>ein ganz besonderes Event</strong>. Daher möchte ich in den kommenden Tagen einige Sessions im Detail vorstellen.</p> <p><em><b>Microsoft BI vNext (Neues aus der Welt von Power BI) <br /></b>”In den letzten hat Microsoft stark im Bereich Self Service BI investiert und die diversen Produkte unter dem Label PowerBI zusammengefasst. In diesem einführenden Vortrag stellt Frank Geisler die Produkte PowerQuery, PowerPivot, PowerView und PowerMap vor. Es wird gezeigt wie man über PowerQuery Daten in eine PowerBI Lösung importieren kann, wie man dann mit Hilfe von PowerPivot ein Datenmodell aufbaut um dieses dann mit PowerView und PowerMap zu visualisieren. Zum Schluss des Vortrages wird noch gezeigt wie man die fertige Lösung auf der PowerBI Website bereitstellen und mit Q&A abfragen kann.” </em></p> <p><strong>Von: </strong></p> <p><strong>Frank Geisler</strong> ist geschäftsführender Gesellschafter der GDS Business Intelligence GmbH und beschäftigt sich in seinem Unternehmen mit dem Microsoft BI Stack und SharePoint Lösungen. Dabei legt er als MCSE – Business Intelligence und MCSE – Data Plattform sowohl Wert auf die Administration als auch die Entwicklung von BI Systemen und kennt den SQL-Server seit der Version 6.5 und SharePoint seit dem Projekt „Tahoe“. Frank hält des Öfteren Vorträge auf Konferenzen, an Universitären oder Usergroup-Treffen und schreibt regelmäßig Artikel für verschiedene deutsche Fachzeitschriften. Außerdem hat er schon einige Bücher veröffentlicht, unter anderem hat er ein grundlegendes Buch zum Thema „Datenbanken“ geschrieben und ist Mitautor der „SharePoint für Dummies“-Bücher. Er gehört zu den Gründungsmitgliedern der PASS Deutschland e.V. und ist zusammen mit Klaus Höltgen Chapter Leader der Regionalgruppe Ruhrgebiet. Für seine Community Arbeit ist Frank im Juli 2014 zum MVP SQL Server ernannt worden.</p> <p><strong>&</strong></p> <p><strong>Volker Hinz</strong> ist führender Lösungsberater für Business Intelligence im Großkundenvertrieb der Microsoft Deutschland GmbH. Architekturberatung rund um SQL, BI und Office-Themen sowie deren Integration in heutige Kundenumgebungen gehört zu seinen Schwerpunkten.</p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-79854134049518613682014-12-08T11:35:00.001+01:002014-12-08T11:35:20.934+01:00Azure ML (Machine Learning) – SQL Server Konferenz 2015<p><a href="http://www.sqlkonferenz.de/"><img title="120x600_SQL_Server_Konferenz7[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 20px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="120x600_SQL_Server_Konferenz7[4]" src="http://lh3.ggpht.com/-T5dirUVJWMs/VIV-5vxXllI/AAAAAAAAAyM/3matRmnc1rU/120x600_SQL_Server_Konferenz7%25255B4%25255D%25255B4%25255D.jpg?imgmax=800" width="102" align="left" height="493" /></a>Wie ich auch schon in <a href="http://saschalorenz.blogspot.com/2014/11/sql-server-konferenz-2015-im-speaking.html">diesem Blogpost</a> angemerkt habe, ist die kommende <a href="http://www.sqlkonferenz.de/">SQL Server Konferenz</a> in Darmstadt <strong>ein ganz besonderes Event</strong>. Daher möchte ich in den kommenden Tagen einige Sessions im Detail vorstellen.</p> <em><b>”How to do Analytics with Azure ML <br /></b>Diese Session zeigt End-to-End wie man große Datenmengen mit Azure ML analysiert, Vorhersagen generiert und diese in Power BI visualisieren und aus Geschäftsanwendungen nutzen kann. Demo-lastig. “</em> <p>Von: </p> <p><strong>Artus Krohn-Grimberghe</strong> <br /><em>Dr. Artus Krohn-Grimberghe has spent the past 6 years immersed in advanced data mining topics. He currently works as assistant professor for Analytic Information Systems and Business Intelligence in Germany. His research focuses on data mining algorithms for e-commerce and mobile business. When he isn’t researching new algorithms or teaching, he is consulting for predictive analytics clients. <br /></em><strong></strong></p> <p><strong>Martin Vach <br /></strong><em>Martin Vach ist führender Lösungsberater für Business Intelligence im Großkundenvertrieb der Microsoft Deutschland GmbH. Architekturberatung rund um SQL, BI und Office-Themen sowie deren Integration in heutige Kundenumgebungen gehört zu seinen Schwerpunkten.</em></p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-1913345987114490902014-12-05T14:17:00.001+01:002014-12-05T14:17:09.366+01:00Azure Search – SQL Server Konferenz 2015<p><a href="http://www.sqlkonferenz.de/"><img title="120x600_SQL_Server_Konferenz7" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 20px 0px 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="120x600_SQL_Server_Konferenz7" src="http://lh6.ggpht.com/-rpl8Odghem0/VIGwU5RFP7I/AAAAAAAAAx8/eRtYBt7dMOI/120x600_SQL_Server_Konferenz7%25255B4%25255D.jpg?imgmax=800" width="102" align="left" height="493" /></a>Wie ich auch schon in <a href="http://saschalorenz.blogspot.com/2014/11/sql-server-konferenz-2015-im-speaking.html">diesem Blogpost</a> angemerkt habe, ist die kommende <a href="http://www.sqlkonferenz.de/">SQL Server Konferenz</a> in Darmstadt <strong>ein ganz besonderes Event</strong>. Daher möchte ich in den kommenden Tagen einige Sessions im Detail vorstellen.</p> <p><em><b>“Looking for Answers with Azure Search <br /></b></em><em>Want to learn how to search your massive data repositories in Azure? <br />Want to learn how to find value from your data quickly? <br />Azure search is a new offering from Microsoft. Being able to search your data repositories at scale is something Azure cloud users have been screaming for. Well now it is here so come to this session and learn how to use Azure search.”</em></p> <p><em>Von <strong>Allan Mitchell</strong></em></p> <p>“I work with companies helping them to decide how best to store their data <br />Key/Value (Redis) <br />Document (DocumentDB, Mongo) <br />Relational (SQL Server) <br />NoSQL (Hadoop/HBase) <br />I also help customers to decide on whether a move to cloud based offerings makes sense. The Azure platform from Microsoft has a lot to offer and it isn't necessarily a Cloud/On Premise binary choice. Hybrid scenarios make a lot of sense too. I also work with customers who have large scale or interesting data movement requirements. This could be batch processes which are complex or real-time sensor and telemetry data.”</p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-45830803777219074452014-12-01T12:05:00.001+01:002014-12-04T07:21:59.361+01:00Azure Data Factory und SSIS – SQL Server Konferenz 2015<a href="http://www.sqlkonferenz.de/"><img title="120x600_SQL_Server_Konferenz" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 20px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="120x600_SQL_Server_Konferenz" src="http://lh4.ggpht.com/-7CXWtyIAo_4/VHxLj1TQrFI/AAAAAAAAAxo/NKzrM72CSCI/120x600_SQL_Server_Konferenz%25255B7%25255D.jpg?imgmax=800" width="102" align="left" height="493" /></a> <p>Wie ich auch schon in <a href="http://saschalorenz.blogspot.com/2014/11/sql-server-konferenz-2015-im-speaking.html">diesem Blogpost</a> angemerkt habe, ist die kommende <a href="http://www.sqlkonferenz.de/">SQL Server Konferenz</a> in Darmstadt <strong>ein ganz besonderes Event</strong>. Daher möchte ich in den kommenden Tagen einige Sessions im Detail vorstellen.</p> <p><strong>“</strong><b>Azure Data Factory und SSIS: Neue Wege zur Ochestrierung von Cloud und On Prem</b> <br /><strong><b><em> <br />Mit der Azure Data Factory (ADF) hat Microsoft einen neuen Managed Service in Azure herausgebracht, welcher für das Laden und Aufbereiten von Datenströmen aus der Cloud und on Prem neue Wege geht. In dieser Session werden wir einen tieferen Einblick in die Technologie erlauben, schauen uns LIVE an wie man mit JSON und PowerShell eine "Fabrik" erstellt, Pipelines baut und den Betrieb monitored. Natürlich blicken wir auch in Richtung Zukunft und auf das was ADF im Unterschied zu unserem "Liebling" SSIS bietet.</em></b></strong><em>”</em></p> <p>Von <strong><strong>Tillmann Eitelberg</strong> & <strong>Oliver Engels</strong> </strong>:</p> <p><em>“</em><strong>Tillmann Eitelberg</strong> ist Geschäftsführer der oh22information services GmbH und hat sich mit seinem Unternehmen auf die Themengebiete Datenqualität, Datenintegration und Master Data spezialisiert. Er schreibt regelmäßig über diese Themen sowie seine kleine Leidenschaft Spatial Data in seinem Blog unter www.ssis-components.net und hat verschiedene SSIS Komponenten bei Codeplex veröffentlicht. Tillmann ist SQL Server MVP. Den PASS Deutschland unterstützt er als 2. Vorsitzender, als Chapter Leader für die Region Köln/Bonn/Düsseldorf sowie als Regional Mentor Germany für PASS Global.<em>”</em></p> <p><em>“</em><strong>Oliver Engels</strong> ist Vorstandsvorsitzender der oh22data AG, Bad Camberg im Taunus. Er gehört zur Spezies der Betriebswirte, die es nicht lassen können, sich mit IT Themen auseinander zu setzen. Das macht er jetzt bereits seit über 20 Jahren mit dem Schwerpunkt auf Marketing- und Vertriebssystemen. <br />Er beschäftigt sich intensiv mit CRM, Datenqualität, Business Intelligence, Enterprise Reporting und der Analyse von Marketing- und Vertriebsdaten. Den MS SQL Server beschäftigt er seit der Version 4. Er gehört zu den Gründungsmitgliedern der PASS Deutschland, ist 1. Vorsitzender, Chapter Leader Rhein/Main sowie Regional Mentor Germany für PASS Global. Oliver ist SQL Server MVP und im Microsoft Advisory Board für SQL Information Services. Wenn er sich mal nicht mit Daten beschäftigt, dann ist er draußen in der Natur, sei es mit seinen Golden Retrievern im Wald oder mit den Wanderstiefeln auf matschigen Trails.<em>”</em></p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-54096401582589017192014-11-30T19:02:00.001+01:002014-11-30T19:02:18.137+01:00SQL Server Konferenz 2015 – I’m speaking<p><a href="http://www.sqlkonferenz.de/"><img title="SQL_Server_Konferenz_ImSpeaking" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="SQL_Server_Konferenz_ImSpeaking" src="http://lh3.ggpht.com/-9d8ZV_i3pVI/VHtbp1zsTiI/AAAAAAAAAxY/iWygJPZkOZE/SQL_Server_Konferenz_ImSpeaking%25255B6%25255D.jpg?imgmax=800" width="754" height="98" /></a></p> <p>Die Zeit rennt mal wieder. Die nächste <a href="http://www.sqlkonferenz.de/">SQL Server Konferenz</a> ist schon wieder komplett geplant. Am 03. – 05.02.2015 in Darmstadt im <a href="http://www.darmstadtium.de"><strong>darmstadtium</strong></a> gibt es wieder zahlreiche Sessions zum Thema Microsoft SQL Server und Data Plattform. </p> <p>Die SQL Server Konferenz in Zahlen zusammengefasst: <strong>40 Sessions, 4 Tracks, 38 Sprecher, 20 MVPs, 17 internationale Sprecher</strong> und damit ist die SQL Konferenz ein internationale Format geworden und für unsere Region einmalig. Und das Ganze zu einem <strong>Hammerpreis</strong>!!  </p> <p>Ich bin wieder als Sprecher für die Konferenz ausgewählt worden, was mich sehr freut. Es wird um das sehr spannende Thema <strong>Data Vault</strong> gehen. Den Vortrag werde ich gemeinsam mit meinem <a href="http://www.psg.de">PSG Kollegen</a> Jan Streblow halten, welcher auch Erfahrung in Projekten mit diesem Data Warehouse Ansatz sammeln konnte.</p> <p><b>“Data Vault in der Praxis mit dem SQL Server <br /></b> <br />Data Vault ist als alternativer Modellierungsansatz für Data Warehouse Umgebungen mittlerweile sehr bekannt geworden. Dennoch fehlt vielen Teams noch die Praxis zur Bewertung der Methode, um in der Architekturphase eines Data Warehouse eine Entscheidung begründen zu können.</p> <p>Diese Session gibt Entscheidern und Entwicklern einen Überblick über die in der Methode vorgeschlagenen Artefakte, skizziert einen Architekturansatz für das sogenannte Core Data Warehouse und zeigt die Vorteile auf gegenüber der klassischen Denormalisierung im Data Warehouse in der Realisierung mit dem SQL Server und den SQL Server Integrationen Services.</p> <p>Gezeigt werden Beispiele aus den Bereichen der privaten Wirtschaft und der öffentlicher Verwaltung.”</p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-37023729145902415842014-07-08T11:41:00.001+02:002014-07-08T11:41:25.118+02:00SQL Server Usergroup Emsland in Lingen – PowerShell 101 für SQL Admins<p>Am 24.07.14 werde ich die neue SQL Server Usergroup in Lingen im Emsland mit einem Vortrag unterstützen. Die Gruppe wird von William Durkin moderiert.</p> <p>Start ist um 17:30 Uhr bei der IT-Emsland, Kaiserstraße 10B, 49809 Lingen (Ems). Dort soll es auch Parkplätze geben. Im Anschluss an das Treffen ist noch ein wenig Socializing in einem Lokal geplant. </p> <p>Mein Vortrag wird “<a href="http://saschalorenz.blogspot.com/2014/06/sql-server-powershell-vortrag-vom.html">PowerShell 101 für Administratoren</a>” sein, welchen ich auch bereits auf dem <a href="http://saschalorenz.blogspot.com/2014/06/sqlsaturday-313-rheinland-und-wie-war.html">SQLSaturday #313</a> gezeigt hatte. Da ich mehr Zeit habe, werde ich auch ein wenig mehr ins Detail gehen können. ;-)</p> <p>Und als kleine Besonderheit ist das wohl mein erster Vortrag, welchen ich als <a href="http://saschalorenz.blogspot.com/2014/07/sql-server-mvp-microsoft-most-valuable.html">SQL Server MVP</a> halten werde. Mal schauen, wie das so ist. Ich freue mich auf Lingen!</p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-27549232430235413962014-07-03T17:34:00.001+02:002014-07-03T17:34:27.429+02:00SQL Server MVP (Microsoft Most Valuable Professional)<p>Es ist tatsächlich passiert. So sieht sie also aus, die Mail von Microsoft, welche einem zum MVP macht. </p> <p><a href="http://lh3.ggpht.com/-uEHnBt7A2bs/U7V3_ZqAO8I/AAAAAAAAAuI/7CgJHHBTyv4/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-tFbexO1qYI0/U7V4AUsv93I/AAAAAAAAAuQ/My59sfWfAAs/image_thumb%25255B1%25255D.png?imgmax=800" width="668" height="200" /></a></p> <p>Diese Auszeichnung ist eine ganz besondere Ehre für mich. Vielen Dank an Alle die mich vorgeschlagen und in das Programm “geschubst” haben! ;-)</p> <p>Seit nun fast genau 10 Jahren organisiere ich Usergroup Treffen (Im September das 100. Treffen in Hamburg), spreche auf Veranstaltungen und erstellen Online-Inhalte wie Blogposts und Webcasts. Meinen neuen Status als MVP und die damit verbundenen Möglichkeiten möchte ich nutzen, um der SQL Server Community noch mehr zur Seite zu stehen mit meinen Ideen und Erfahrungen aus dem SQL Server Alltag. </p> <p>Hier ein wenig Erläuterung direkt von <a href="http://mvp.microsoft.com/de-de/award-value.aspx">Microsoft zum MVP Award</a>. </p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-68907129516412298962014-06-30T15:19:00.001+02:002014-06-30T15:19:15.530+02:00SQL Server PowerShell Vortrag vom SQLSaturday #313<p>Hier noch mal alle Folien zu meinem Einführungsvortrag PowerShell für SQL Server Administratoren.</p> <iframe style="margin-bottom: 5px; max-width: 100%; border-top: #ccc 1px solid; border-right: #ccc 1px solid; border-bottom: #ccc 0px solid; border-left: #ccc 1px solid" height="356" marginheight="0" src="//www.slideshare.net/slideshow/embed_code/36428079" frameborder="0" width="427" marginwidth="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe> <div style="margin-bottom: 5px"><strong><a title="PowerShell 101 für SQL Administratoren - SQLSaturday #313 Rheinland" href="https://de.slideshare.net/SaschaLorenz/powershell-101-fr-sql-administratoren-sqlsaturday-313-rheinland" target="_blank">PowerShell 101 für SQL Administratoren - SQLSaturday #313 Rheinland</a> </strong>from <strong><a href="http://www.slideshare.net/SaschaLorenz" target="_blank">Sascha Lorenz</a></strong> </div> <div style="margin-bottom: 5px"> </div> <div style="margin-bottom: 5px"><strong> </strong></div> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-41433338293578229382014-06-30T14:42:00.001+02:002014-06-30T14:42:14.766+02:00SQLSaturday #313 – Rheinland – Und, wie war's dieses Mal so?<p>Wie die Zeit vergeht. Letztes Wochenende war schon wieder ein SQLSaturday in Deutschland. Wir sind bei #313 angekommen, auch bekannt als #sqlsatrheinland.</p> <p>Eigentlich war Vieles wie beim letzten SQLSaturday (#230) an der Fachhochschule Bonn-Rhein-Sieg. Super Veranstaltung, alles gut organisiert durch viele freiwillige Helfer.</p> <p>Das Essen. Es muss erwähnt werden, dass ein SQLSaturday kostenlos für die Teilnehmer ist und nur durch die Sponsoren finanziert wird. Vielen Dank an diese! Wie letztes Jahr auf hohem Uni Niveau. </p> <p>Meine Session verlief sehr gut und ich hoffe, ich konnte einen guten Einstieg in <a href="http://saschalorenz.blogspot.com/2014/05/sqlsaturday-313-rheinland-2014-ich-bin.html" target="_blank">Windows PowerShell für SQL Server</a> geben. Es hat großen Spaß gemacht! Die Folien habe ich bereits hochgeladen. <a title="http://www.sqlsaturday.com/viewsession.aspx?sat=313&sessionid=20975" href="http://www.sqlsaturday.com/viewsession.aspx?sat=313&sessionid=20975">Folien für PowerShell 101 für SQL Server Admins</a></p> <p>Geschenke. Am Ende gab es dann wieder einen Verlosungsmarathon, welchen wir ein wenig optimiert haben. Wir werden besser und schneller! Und viel Spaß mit der Xbox One und Playstation. ;-)</p> <p>Dieses Jahr gab es am Freitag keine Precons, sondern einen Big Data Hackathon. Dieser wurde genau wie der SQLSaturday sehr gut angenommen.</p> <p><strong>Vielen Dank an die Organisatoren und die vielen vielen Freiwilligen vor Ort! <br />Ich freue mich schon auf den nächsten SQLSaturday in Deutschland!</strong></p> <p><a href="http://lh6.ggpht.com/-iSvy0pIn9I4/U7FbCp4GlsI/AAAAAAAAAsg/qkrv5MHKGtg/s1600-h/image%25255B7%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-mFOPeR4sQLQ/U7FbDqWLqWI/AAAAAAAAAso/QAY8OAt8QMA/image_thumb%25255B3%25255D.png?imgmax=800" width="488" height="276" /></a></p> <p>Impression vom Big Data Hackathon.</p> <p><a href="http://lh3.ggpht.com/-x7EV8UkFnmk/U7FbEPrRIEI/AAAAAAAAAsw/qF45bk6MzcU/s1600-h/image%25255B14%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-oklGrAcpfWE/U7FbE40rP3I/AAAAAAAAAs4/6wCr50hAmEE/image_thumb%25255B6%25255D.png?imgmax=800" width="244" height="139" /></a><a href="http://lh4.ggpht.com/-_XmDs2N7uIY/U7FbFlIEnAI/AAAAAAAAAtA/7OC3eWdR4B4/s1600-h/image%25255B11%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-6b-Ohh8nrbc/U7FbGByNDeI/AAAAAAAAAtI/IlV9JQjCRMw/image_thumb%25255B5%25255D.png?imgmax=800" width="244" height="139" /></a></p> <p>Big Data und Cloud Experten Scott Klein und Sascha Dittmann haben den Freitag moderiert. </p> <p><a href="http://lh5.ggpht.com/-gj91Xn_HMIU/U7FbGgpJ6KI/AAAAAAAAAtQ/P0gUcNzvdAQ/s1600-h/image%25255B8%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-7uiUAARUh5s/U7FbHeuZPtI/AAAAAAAAAtY/gH6dCSsOkvo/image_thumb%25255B4%25255D.png?imgmax=800" width="490" height="263" /></a></p> <p>Natürlich gab es auch wieder ein internationales Speaker Dinner ! Wusstet Ihr, dass es Bönnsch gibt? </p> <p><a href="http://lh3.ggpht.com/-eUOfxtBkeUg/U7FbIGr519I/AAAAAAAAAtg/BG63EKIcrGo/s1600-h/image%25255B19%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-8gsfQpxC6YE/U7FbJNGpMhI/AAAAAAAAAto/_EgfvmBxmAM/image_thumb%25255B9%25255D.png?imgmax=800" width="495" height="373" /></a></p> <p>Und dieses Selfie von Niko Neugebauer wird wohl in die Geschichte des SQL Servers eingehen! </p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-10860539293232122382014-06-20T13:41:00.001+02:002014-06-20T13:41:12.106+02:00SQL Server PowerShell ? Lohnt es sich überhaupt damit zu beschäftigen ?<p>Diese Frage wurde mir in den letzten Tagen häufig gestellt, als es sich herumgesprochen hat, dass ich auf dem <a href="http://saschalorenz.blogspot.com/2014/05/sqlsaturday-313-rheinland-2014-ich-bin.html" target="_blank">SQLSaturday #313</a> einen Crashkurs PowerShell für SQL Server Administratoren halte.</p> <p>Und warum gerade ich? In den letzten Jahren bin ich ja eher nicht durch das Thema Administration in der Öffentlichkeit aufgefallen. Bin doch eher der BI Entwickler, welcher durch konsequente Nutzung der Möglichkeiten vieles im BI Projekt als auch im späteren Betrieb automatisiert.</p> <p>Da PowerShell vereinfacht gesagt eine Shell ist, mit welcher das .NET Framework sehr komfortabel genutzt werden kann, bin ich wieder voll im Spiel und gefühlt ist meine SQLSat Session quasi die Fortsetzung vieler meiner Community-Projekte und Vorträge in denen ich mit .NET Bibliotheken gearbeitet habe. </p> <p>Nur warum PowerShell für den SQL Server? “Wir” haben doch T-SQL und eine Menge an Komfortfunktionen rund um den Betrieb eines SQL Servers. </p> <p>Da schaut es bei den Kollegen für Exchange Server oder SharePoint Farmen schon ganz anders aus. Die können sich mittlerweile ohne PowerShell gefühlt keinen Meter bewegen. Viele Funktionen sind, so wurde mir zugetragen, auch NUR noch über PowerShell erreichbar. Daher ist in diesen Communities das Thema auch wesentlich populärer als bei “uns”.</p> <p>Also, wozu braucht nun ein SQL Administrator PowerShell? </p> <p>Brauchen zurzeit noch nicht zwingend, dennoch ist es schon äußerst nützlich und zwar immer dann, wenn etwas automatisiert werden soll, was außerhalb des SQL Servers liegt. Oder wenn einfach mal der SQL Server Dienst selbst an der Reihe ist. </p> <p>Neben meinem Community Leben beschäftige ich mich sehr intensiv mit Administration. Meine Kollegen bei der <a href="http://www.psg.de" target="_blank">PSG</a> verantworten große und komplexe SQL Server Umgebungen, welche zum Teil auch global und rund um die Uhr genutzt werden. Da ist das Thema Standardisierung und Automatisierung sehr wichtig, um einen konstant robusten Betrieb zu ermöglichen. Und der Betrieb betrifft häufig auch das Betriebssystem, Storage-Systeme, AD-Gruppen, Virtualisierung etc. pp. Vieles ließe sich sehr wahrscheinlich mit ein wenig Kreativität nativ in T-SQL lösen (und ich hätte einen Wahnsinnsspaß mir das auszudenken), nur hat sich um die SQL Server Welt herum im Microsoft Eco-System PowerShell als das Allzweckwerkzeug für viele Aufgabenstellungen entwickelt. </p> <p>Und dann, dann ist da noch die Cloud. Ja, die Cloud. Und so richtig sinnvoll werden Szenarien in der Cloud erst, wenn der Grad an Automatisierung sehr hoch ist. Ich weiß, dass bei dem Thema noch viele Mitglieder aus der Community zusammenzucken und ein leises “das wird nie bis zu mir kommen…” von sich geben. Dennoch stelle ich in der Zusammenarbeit mit Microsoft fest, dass immer mehr Kunden die Einsatzmöglichkeiten von Azure prüfen oder gar schon am implementieren sind. Und auch hier ist eine Automatisierung der Provisionierung von Cloud Diensten am einfachsten mit PowerShell zu erreichen. </p> <p>PowerShell soll kein Ersatz für das administrative T-SQL sein und vieles lässt sich auch sehr gut wenn nicht sogar einfacher damit abbilden. Dennoch ist PowerShell eine gute Ergänzung für die tägliche Arbeit und ermöglicht neue einfachere Lösungen.</p> <p>Gebt PowerShell eine Chance, schaut Euch die grundlegenden Konzepte an und entscheidet dann. </p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.comtag:blogger.com,1999:blog-11574504.post-5839980648707661152014-06-03T09:58:00.001+02:002014-06-03T09:58:36.596+02:00SQLSaturday #313 - PowerShell Crashkurs – Early Access<p><a href="http://saschalorenz.blogspot.com/2014/05/sqlsaturday-313-rheinland-2014-ich-bin.html" target="_blank">Wie schon gepostet, bin ich beim SQLSaturday #313 dabei.</a> </p> <p>Daher möchte ich die Gelegenheit nutzen und beim nächsten Treffen der <strong>Hamburger SQL Server Community am 12.6. bei Microsoft</strong> eine Vor-Version meines <strong>PowerShell Vortrags</strong> geben. Ich würde mich sehr freuen, wenn wieder viele von Euch dabei sind und mir Feedback geben.</p> <p>Wir treffen uns am <strong>12. Juni 2014 um 18:30</strong> bei:</p> <p><b>Microsoft Deutschland GmbH <br />Geschäftsstelle Hamburg <br />Gasstraße 6a <br />22761 Hamburg</b></p> <p><b>Kostenlose Parkplätze</b> befinden sich hinter dem Gebäude. Der <b>Parkplatz</b> ist über die Rampe mit dem Schild "Microsoft Kunden" erreichbar. <br />Nur wenige Minuten zu Fuß ist der <b>S-Bahnhof Bahrenfeld</b> entfernt (S1/S11).</p> <p>Wir (PASS Hamburg) bitten um eine vorherige Anmeldung per Email an: <a href="mailto:slo@sqlpass.de">slo@sqlpass.de</a>, damit wir die Größe des benötigten Konferenzraums vorher abstimmen können. Es haben sich schon einige Teilnehmer angemeldet.</p> Sascha Lorenzhttp://www.blogger.com/profile/13002884600414156236noreply@blogger.com