Welcome to TechNet Blogs Sign in | Join | Help

Das Update für das hier beschriebene Problem (SharePoint Server, Project Server und Search Server incl. Express werden Evaluierungsversion nach der Installation von Service Pack 2) ist jetzt verfügbar. Insbesondere bei Search Server Express ist die Installation dieses Patches essenziell, da dort der Workaround (Lizenzschlüssel erneut eingeben) nicht möglich war.

Knowledgebase-Artikel KB971620

x86-Version des Patches

x64-Version des Patches

Informationen der Produktgruppe

Gruß,
Steffen

Ich war gestern bei der hhp Berlin (wo ich auch schon das HPC Cluster-Projekt gemacht habe) und habe ein Interview mit dem IT Leiter und Mitglied der Geschäftsleitung Stefan Truthän zum Thema Windows 7 Einführung geführt. Er erklärt, warum die hhp Windows 7 einführt, wie sie dabei vorgeht und warum auch kleinere Unternehmen eine innovative Infrastruktur einsetzen sollten.
Leider hatte ich nur meine kleine Webcam bei, daher ist die Bildqualität nicht so gut, aber es geht ja um den Ton...

Hier ist das Video zum Download, und hier als Stream:

Gruß,
Steffen

TechEd 2009 Europe Logo Dieses Jahr kommt die europäische TechEd, die wichtigste europäische Konferenz zu Microsoft-Technologien – nach Berlin. Sie findet vom 9.-13.November 2009 auf der Berliner Messe statt und ist nicht mehr geteilt – es gibt eine TechEd für IT Professionals und Entwickler. Das wird insbesondere diejenigen freuen, die sich sowohl für Softwareentwicklung als auch für Administration interessieren.

Ich werde wieder zusammen mit Kevin Ashby der Track Owner für den Datenbanktrack und den BI-Track sein, werde also auf diesen beiden Gebieten Sprecher und Sessions auswählen, Qualitätskontrolle machen und einen für jeden Datenbanker interessanten Track zusammenstellen. Dieses Jahr natürlich auch mit SQL Server 2008 R2 Inhalten. Ich habe lange geschwankt, ob ich nicht doch lieber den Office (und SharePoint) Track übernehmen soll, aber dafür haben wir mit meinem Kollegen Sven Maier auch eine Idealbesetzung gefunden.

Die Anmeldung zur TechEd ist ab dem 22.6.2009 offen. Frühbucher aufgepasst: In diesem Jahr warten großzügige Rabatte. Tickets gibt es dann schon ab 995,-€ (solange der Vorrat reicht).

Weitere Informationen zur Konferenz und die Möglichkeit zur Registrierung gibt es auf der Website http://www.microsoft.com/emea/teched2008/. Sie bleiben auch auf dem Laufenden, wen Sie unseren Twitter-Kanal nutzen unter http://twitter.com/teched_europe.

Gruß,
Steffen

In das Service Pack 2 von Office SharePoint Server und den anderen Office Server-Produkten hat sich ein bedauerlicher Bug eingeschlichen: Nach der Installation von SP2 wird der SharePoint in eine Evaluierungsversion zurückgesetzt. Das bedeutet, das ab der Installation von SP2 eine 180 Tage Evaluierungsperiode gilt.

Die Produktgruppe arbeitet an einem Hotfix. Bis dahin ist die beste Methode, das Problem zu umgehen, einfach die Product ID Number (PID) noch einmal einzugeben, und zwar auf der Seite “Convert License Type” in der Zentraladministration. Das genaue Verfahren ist in diesem KB-Artikel beschrieben.

Das Problem betrifft Office SharePoint Server 2007, Project Server 2007, Form Server 2007 und Search Server 2008. Windows SharePoint Services sind nicht betroffen.

Update: Ebenfalls betroffen ist Search Server Express 2008. Da man hier aber keinen Product Key hat hinft nur, auf den Hotfix zu warten.

Mehr Informationen gibt es im SharePoint Produktgruppen-Blog

Gruß,
Steffen

image

Heute gibt es mal wieder einen schönen Kundenbericht, diesmal von einem Projekt, an dem ich selbst am Anfang mitgewirkt habe. Der Kunde ist die Handelsüberwachung der Baden-Württembergische Wertpapierbörse Stuttgart. Die Spezialität dieser Börse ist der Anleihen- und Derivatehandel. Täglich durchlaufen bis zu einer Milliarde Datensätze für die verschiedenen Wertpapiere die Börse. Aufgabe der Handelsüberwachung ist es nun unter anderem, diese Daten auf Unregelmäßigkeiten und Verstöße gegen die Börsenregeln zu untersuchen.

Daher müssen die Preisstellungen/Taxen und die tatsächlich abgewickelten Trades in eine Auswertungsdatenbank importiert und möglichst zeitnah ausgewertet werden. Anders als bei einem normalen Data Warehouse wird die Zieltabelle also während des Bulk Loads für Auswertungen abgefragt. Das übliche Verfahren: Indizes deaktivieren, importieren, Indizes wieder aufbauen geht hier somit nicht.

Im beiliegenden Whitepaper beschreibt der Kunde die gefundene Lösung, die auf Tabellenpartitionierung und Partitionsumschaltung sowie Datenimport mit SQL Server Integration Services beruht.

Was mich neben der großen Datenmenge bei völlig normaler Hardware bei diesem Projekt noch begeistert hat ist die kurze Implementierungszeit neben dem Tagesgeschäft: Der Kunde kam auf der CeBit im März auf mich zu, daraufhin war ich am 2. April in Stuttgart, und am 15. Mai bekam ich das fertige Whitepaper, laut dem die Lösung bereits drei Wochen im Produktivbetrieb ist.

Ein Zitat des Kunden:

Seit wir die Partitionstechnologie im System realisiert haben, haben wir nun keinerlei Bedenken mehr gegenüber großen Datenmengen.

Hier nun das Whitepaper, mit dem üblichen Disclaimer: Das Whitepaper gibt die Sicht des Kunden (Handelsüberwachungsstelle der Baden-Württembergische Wertpapierbörse Stuttgart) wieder, nicht meine oder die der Microsoft Deutschland GmbH

Gruß,
Steffen

Meine Kollegen bringen die Hands On Labs zum Upgrade auf SQL Server 2008 in 5 deutsche Städte. Die Teilnehmer lernen dabei am praktischen Beispiel an ihrem eigenen PC, wie eine SQL Server 2000 oder 2005 Installation auf SQL Server 2008 aktualisiert werden kann.

Zur Vorbereitung empfehle ich meine Webcastreihe:

TechNet Webcastreihe: Upgrade auf SQL Server 2008 (Teil 1)
Überblick (Level 200)

TechNet Webcastreihe: Upgrade auf SQL Server 2008 (Teil 2)
Die relationale Datenbank (Level 300)

TechNet Webcastreihe: Upgrade auf SQL Server 2008 (Teil 3)
Analysis Services (Level 200)

TechNet Webcastreihe: Upgrade auf SQL Server 2008 (Teil 4)
Reporting Services (Level 300)

Termine & Links der Hands On Labs:

Böblingen: Mittwoch, 17.6. : http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032415793&Culture=de-DE

Unterschleißheim: Mittwoch, 24.6    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032415794&Culture=de-DE

Hamburg: Montag, 29.6. http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032415796&Culture=de-DE

Bad Homburg: Mittwoch, 1.7.  http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032415799&Culture=de-DE

Köln: Donnerstag, 2.7. http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032415801&Culture=de-DE

Upgrade-Workshop: Von SQL Server 2000/2005 auf SQL Server 2008 wechseln

Jetzt wird’s ernst. In diesem Hands-on-Lab stellen wir Ihnen einen SQL Server 2000 in einer Virtuellen Maschine (Virtual PC) zu Verfügung und wir werden diese Instanz des SQL Servers 2000 gemeinsam auf den SQL Server 2008 migrieren. Dabei erfahren Sie aus erster Hand von den Microsoft Experten was es zu beachten gibt und welches Vorgehen wann am besten geeignet ist.

Bitte bringen Sie einen Laptop Rechner mit mindestens 2GB RAM und 20G freiem Plattenplatz mit zu der Veranstaltung. Zu Beginn der Veranstaltung werden wir Ihnen eine externe USB 2.0 Festplatte zur Verfügung stellen, damit Sie das Ausgangs Image auf Ihren Rechner kopieren können. Im Anschluss an diese Veranstaltung haben Sie eine klares Bild über den effizientesten Weg  Ihre SQL Server 2000/2005 Server auf SQL Server 2008 upzugraden.

Getränke und Pizza-Lunch werden wir Ihnen stellen.

Gruß,
Steffen

Die nächste Neuerung von der TechEd ist die Ankündigung des offiziellen Namens von SQL Server “Kilimanjaro”. Der Name ist SQL Server 2008 R2. Diese Version ist, wie der Name schon andeutet, eine Zwischenversion, die vor allem auf neue Anwendungsfälle für SQL Server fokussiert.

Kern-Neuerungen sind:

  • Unterstützung von mehr als 64 Prozessorkernen. Für R2 wird die Grenze 256 Kerne sein
  • Umfassende Multi-Server-Überwachung und umfangreiches Multi-Server-Management (Codename war “Synthesis”)
  • Master Data Services
  • Self-Service Analysis (“Gemini”). Dies ermöglicht die Analyse von sehr großen Datenmengen (gezeigt wurden über 100 Millionen Zeilen) direkt aus Excel, die Modellerstellung und Bearbeitung aus Excel und die Weitergabe und zentrale Ausführung dieser Analysemodelle über SharePoint
  • Map_Sales-sm Self-Service Reporting. Die Erstellung von Berichten durch Endbenutzer wird deutlich vereinfacht, und es wird neue grafische Möglichkeiten wie Landkartendarstellungen geben. Darüber hinaus können unternehmensinterne Galerien mit vorgefertigten Berichtskomponenten angelegt und genutzt werden.

Mehr Informationen gibt es hier.

Gruß,
Steffen

(Crosspost aus dem Office 2010 Blog)

Die US-TechEd hat begonnen, und damit kommen auch eine Reihe von Ankündigungen zu den Office 2010 Produkten.

Es wird im Juli diesen Jahres eine “Technical Preview” genannte Vorabversion der Office 2010 Clientprogramme (Office Professional Plus 2010 und Visio 2010) geben, damit die ersten Kunden Tests mit Office 2010 beginnen können. Diese Technical Preview steht allen Teilnehmern der US TechEd offen, andere Interessenten können sich über http://www.office2010themovie.com um die Teilnahme bewerben. Ab dem Erscheinen der Technical Preview wird es auch detailliertere Informationen zu den neune Funktionalitäten geben. Eine öffentliche Beta ist ebenfalls noch für das Jahr 2009 geplant.

Die Serverprogramme (SharePoint Server 2010 und Project Server 2010) werden nicht Teil der Technical Preview sein und nur bei einigen ausgewählten Unternehmenskunden in den Test gehen. Die öffentliche Beta wird später auch die Serverprodukte beinhalten.

Die Office Webapplikationen sind ebenfalls nicht Teil der Technical Preview.

Es wird die Office Clientprogramme, also alles von Word bis Visio, nicht nur ein einer 32bit-Version (x86) sondern zusätzlich auch in einer 64bit-Version (x64) geben.

Die vorläufigen Systemanforderungen für SharePoint Server 2010 wurden ebenfalls präzisiert:

  • Es wird nur eine x64-Version von SharePoint geben, keine x86 Version mehr
  • Als Betriebssystem wird die x64-Version von Windows Server 2008 oder Windows Server 2008 R2 vorausgesetzt
  • Als Datenbank für SharePoint Server 2010 ist SQL Server 2005 oder 2008 in einer 64bit-Edition erforderlich. SQL Server 2000 sowie die 32bit-Versionen von SQL Server 2005 und 2008 werden nicht mehr für SharePoint unterstützt.
  • Internet Explorer 6 wird nicht mehr als Browser unterstützt (außer für Publishing-Sites, die der Webdesigner spezifisch für IE6 anpasst). Das liegt daran, dass XHTML 1.0 vorausgesetzt wird. Unterstützte Browser sind zum Beispiel Internet Explorer 7 und 8 sowie Firefox 3.x auf Windows. Ebenso wird die Kompatibilität mit Firefox 3.x und Safari 3.x auf nicht-Windows-Systemen deutlich verbessert.

Mehr Informationen zu den SharePoint Server 2010 Systemanforderungen gibt es hier

Gruß,
Steffen

Seit der Veröffentlichung von Office 2007 Service Pack 2 erreichen mich Fragen, in welcher Reihenfolge das Service Pack denn nun auf SharePoint installiert werden muss. Insbesondere die verbesserte Unterstützung für Mozilla Firefox und Internet Explorer 8 reizt ja viele…

Zum ersten: Service Pack 2 setzt nicht Service Pack 1 voraus. Man kann also direkt von der RTM-Version auf Service Pack 2 aktualisieren

Zum anderen: Die richtige Reihenfolge bei der Installation ist (3. und 4. natürlich nur, wenn Office SharePoint Server aktualisiert werden soll):

  1. Service Pack 2 für Windows SharePoint Services 3.0
  2. Service Pack 2 für Windows SharePoint Services 3.0 Sprachpakete (wenn welche installiert sind)
  3. Service Pack 2 für Office SharePoint Server 2007
  4. Service Pack 2 für Office SharePoint Server 2007 Sprachpakete (wenn welche installiert sind)

Weitere Informationen zum Service Pack finden sich hier für Office SharePoint Server und hier für Windows SharePoint Services

Gruß,
Steffen

In Vorbereitung auf die kommenden Office-Produkte, insbesondere Office 2010 und SharePoint 2010 habe ich zusammen mit einigen Kollegen ein neues Blog ins Leben gerufen, das sich ausschließlich mit den kommenden Produkten Office 2010, Exchange Server 2010, SharePoint 2010 und Office Communication Server 2010 beschäftigen wird.

Die Adresse:

http://blogs.technet.com/zweitausendzehn

Gruß,
Steffen

SQL Server kann die Kommunikation zwischen Client und Server schon seit einigen Versionen verschlüsseln. Seit SQL Server 2005 ist dabei nicht mal mehr die Installation eines SSL-Zertifikats auf dem Server notwendig – allerdings ist sie dennoch sinnvoll, zum Warum komme ich noch. Die Login-Pakete für SQL-Logins sind seit SQL Server 2005 übrigens immer verschlüsselt (wenn die Clientsoftware das unterstützt).

Wer verschlüsselte Kommunikation zwischen Client und Server einrichten will, der sollte vorher testen, ob alle verwendete Clientsoftware Verschlüsselung unterstützt. Bei Microsoft-Clientsoftware sollte mindestens MDAC 2.6 installiert sein (die ist schon ziemlich alt), MDAC 2.53 und die uralte DBLibrary unterstützen keine Verschlüsselung. Wenn fremde Clientsoftware zum Einsatz kommt sollte geprüft werden, ob Verschlüsselung unterstützt wird.

Außerdem sollte beachtet werden, dass jede Form von Verschlüsselung zusätzliche CPU-Last erzeugt und dass verschlüsselte Datenströme nicht mehr komprimiert werden können (z.B. mit einem WAN Accelerator).

Wie schaltet man Verschlüsselung nun ein? Ganz einfach: Mit dem SQL Server Configuration Manager. Dort öffnet man den Knoten “SQL Server Network Configuration”, wählt “Properties for <Instanzname>”, macht einen Rechtsklick und wählt “Properties” (bzw. Eigenschaften). Jetzt setzt man einfach “Force Encryption” auf Yes:
image

Danach muss der SQL Server Dienst neu gestartet werden, und es werden nur noch verschlüsselte Verbindungen akzeptiert.

Wenn dabei im “Certificate” Tab kein geeignetes SSL-Zertifikat gewählt wird, dann generiert SQL Server (ab 2005) ein selbstsigniertes Zertifikat. Das bedeutet, dass die Kommunikation zwischen Client und Server verschlüsselt ist, ein passives Abhören der Daten also nicht möglich ist.

Gleichzeitig bedeutet es aber auch, dass der Client nicht die Identität des Servers prüfen kann, da das vom Server selbst erstellte Zertifikat aus Clientsicht nicht vertrauenswürdig ist (ein solches Zertifikat kann sich ja auch jeder Angreifer erstellen). So genannte “Man in the middle” Angriffe sind also weiterhin möglich. Bei einer “Man in the middle” Attacke schafft es der Angreifer, sich aktiv zwischen Client und Server zu stellen (z.B. über DNS Spoofing oder indem der Angreifer einen Router übernehmen kann). Er gibt sich dann dem Server gegenüber als Client aus und dem Client gegenüber als Server. Solch ein Angriff ist natürlich weit schwieriger zu bewerkstelligen als ein passives Abhören.

Wer das verhindern möchte, der muss auch in SQL Server 2005 und 2008 ein SSL-Zertifikat installiert werden, das von einer (aus Clientsicht) vertrauenswürdigen Stammzertifizierungsstelle signiert wurde und auf den vollqualifizierten Namen (FQDN) des Servers ausgestellt wurde. Ein solches Zertifikat kann man von einer firmeneigenen PKI erhalten oder bei einem Zertifikatsanbieter (gegen Geld und entsprechende Nachweise) kaufen. Es ist dieselbe Art Zertifikat, die man auch für einen Webserver braucht.

Wenn man in der SQL Server Clientsoftware “Encrypt Connection” aktivieren möchte, dann verlangt der Client ebenfalls ein von einer vertrauenswürdigen Stammzertifizierungsstelle signiertes Zertifikat:image

Hat man ein solches Zertifikat, so muss man es für das Computerkonto installieren. Dazu öffnet man die Managementkonsole (mmc.exe) und fügt das Zertifikate-Snapin für das lokale Computerkonto hinzu:image

Dann importiert man das Zertifikat inklusive privatem Schlüssel (am Besten aus einer .pfx-Datei) in den Zertifikatsspeicher “Eigene Zertifikate->Zertifikate”:

image

Wenn alles richtig gemacht wurde und das Zertifikat den Anforderungen entspricht, dann kann man das Zertifikat jetzt im SQL Server Configuration Manager auswählen:

image

Nun braucht wieder nur der SQL Server neu gestartet zu werden. Allerdings kann es sein, dass SQL Server jetzt nicht startet. Das passiert, wenn (wie empfohlen) SQL Server unter einem nicht-administrativen Konto ausgeführt wird. Dieses Verhalten ist für “Network Service” in  KB900495 dokumentiert, betrifft aber jedes nicht-administrative SQL Server Dienstkonto. Der Hintergrund ist, dass in aktuellen Windows-Versionen nur Administratoren Zugriff auf die privaten Schlüssel des Computerkontos haben.

Um Abhilfe zu schaffen müssen wir dem SQL Server Dienstkonto Rechte am Privaten Schlüssel geben. Das geht wieder über die Zertifikatsverwaltung. Man wählt das betreffende Zertifikat aus, wählt rechts “Weitere Aufgaben”->”Alle Aufgaben”->”Private Schlüssel verwalten”:

image

Hier fügt man das SQL Server Dienstkonto mit Leseberechtigungen hinzu. Nun kann der SQL Server Dienst wieder gestartet werden, und auch die “Encrypt Connection” Einstellung auf dem Client ist möglich.´

Eine Warnung zum Schluss: Wenn man später aus irgendwelchen Gründen das Zertifikat auf dem Server löschen will sollte man es tunlichst erst über den “Clear”-Button im SQL Server Configuration Manager Zertifikate-Tab aus der SQL Server Konfiguration entfernen. Hat man das vergessen, bevor man das Zertifikat gelöscht hat kann man das gewählte Zertifikat nur noch über den Registry-Editor löschen (Wert von HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Certificate).

Gruß,
Steffen

Das Service Pack 1 (SP1) für SQL Server 2008 ist erschienen. Neue Features sind nicht enthalten, aber wie in jedem Service Pack fließen alle Verbesserungen und Fehlerbehebungen seit der Release-Version von SQL Server 2008 ein. Da es aber in SQL Server 2008 recht wenige Probleme gab sind es mit ca. 300 Fixes erheblich weniger, als es sonst bei einem Service Pack der Fall ist. SQL Server 2005 SP1 enthielt zum Beispiel ca. 2500 Updates und kleinere Problembehebungen. Das spricht sehr deutlich für den verbesserten Entwicklungsprozess bei SQL Server, über den ich gern gesprochen habe.

Für die Bereitstellung im Unternehmen gibt es aber drei wesentliche Verbesserungen:

  • Per Slipstream lässt sich SQL Server 2008 und Service Pack 1 in einem Durchgang installieren. Dadurch geht die Bereitstellung zügiger vonstatten.
  • Über die ClickOnce-Bereitstellung können Sie Ihren Anwendern schnell und einfach eine SQL Server-Authoring-Anwendung bereitstellen
  • Das Service Pack kann deinstalliert werden.

Der Download und die Details zu den Fixes finden sich hier:

Gruß,
Steffen

Im Rahmen unserer TechDay Reihen gibt es im Mai vier Tage zum Thema PowerShell. Windows-Administratoren haben den Ruf, vor allem mit der Maus zu administrieren. Gutes Skripting hilft aber bei der Automatisierung, und da gibt es nichts besseres als PowerShell. Für diesen TechDay haben wir uns die PowerShell-Experten eingeladen: Rolf Masuch, Malte Pabst und Tobias Weltner. Ich bin auch dabei und spreche über PowerShell mit SQL Server, SharePoint und DPM.

Hier die Termine:

05.05.2009 Hamburg

06.05.2009 Düsseldorf

12.05.2009 Stuttgart

15.05.2009 München

Mehr Informationen und die Anmeldung findet sich auf der TechDay PowerShell Seite

Gruß,
Steffen

Die Cloud-Infrastruktur Azure hat auch eine Datenbank, die in Microsoft-Rechenzentren gehostet wird. Diese Datenbank heißt SQL Data Services (SDS). Als die erste Testversion von SQL Data Services herauskam war sie für SQL Server Entwickler ziemlich ungewohnt, denn sie unterstützte nur ein XML-basiertes REST API. Das finden reine .NET Entwickler zwar gut, weil XML einfach zu verarbeiten ist, aber der Datenbanker stellte sich Fragen wie Kompatibilität und Performance.

Daher wurde die Entscheidung getroffen, SDS auf die SQL Server Standard-Schnittstelle TDS umzustellen. Das ist dasselbe Protokoll, mit dem sich die SQL Server Clients wie OLEDB-Provider und ODBC-Treiber mit dem Server unterhalten. Die gesamte vorhandene Infrastruktur an Clientkomponenten, von ADO..NET bis ODBC wird also unterstützt. Ebenso wird als Programmierschnittstelle das gewohnte T-SQL unterstützt, einschließlich Dingen wie Stored Procedures und Triggern. SQL Server Entwickler können also auf der Azure Services Plattform genauso entwickeln wie sie es vom “normalen” SQL Server gewohnt sind, und sie können Anwendungen einfach zwischen in-Haus-Datenbank und Cloud-Datenbank umschalten.

Dazu kommen die Azure-Features wie Hochverfügbarkeit, Fehlertoleranz und einfache Skalierbarkeit.

Mehr Informationen gibt es hier.

Gruß,
Steffen

Endlich nehme ich meine Reihe mir den Interviews aus meiner Redmond-Zeit wieder auf. Eines der interessantesten Interviews habe ich mit Leo Giakoumakis – Test Lead, Query Optimizer geführt.

Gruß,
Steffen

Hallo Leo, schön Dich zu sehen. Dein Jobtitel lautet „Test Lead“. Kannst Du uns einen kurzen Überblick geben wer Du bist und wo Du herkommst?

Ich komme ursprünglich aus Griechenland. Danach habe ich ein paar Jahre in England gelebt, und seit 8 Jahren bin ich hier bei Microsoft in Redmond. Den größten Teil davon im Engine Team in der SQL Server Gruppe. Meine Rolle während der Katmai-Release (SQL Server 2008) war der Test Lead für den Query Optimizer. Es ist interessant, im Test einer so komplexen Komponente zu arbeiten.

Die normale Test-Position bei Microsoft heißt „Software Development Engineer in Test“ (SDE/T). Das finde ich interessant, denn die meisten Leute würden erst mal nicht annehmen, dass ein Tester ein Entwickler sein sollte. Warum ist das so?

Bei Microsoft, und insbesondere in einer Produktgruppe wie SQL Server kommen die Tester aus derselben Gruppe von Menschen wie Entwickler oder Program Manager – Menschen mit einem Abschluss in Informatik, Menschen, die Code schreiben. Der Grund für die Programmierkenntnisse ist, dass all unsere Tests automatisiert sind. Es gibt kaum manuelle Tests, in meiner Gruppe gar keine. Der Code, den wir entwickeln überprüft den Code auf verschiedene Art, validiert Korrektheit, Performance, Skalierbarkeit und solche Sachen. Für ein Produkt wie SQL Server ist die Menge an Testcode, den wir schreiben so groß sein wie ein kleineres Produkt. Wir haben also ähnliche Software-Engineering-Probleme: Code Reviews, Wartbarkeit, Korrektheit, Fehlerbehebung und so weiter. Damit Du eine Idee bekommst: Jedes Mal, wenn wir einen neuen Datentyp einführen, wie Date und Time in SQL Server 2008, müssen wir sicherstellen, dass die Indizierung funktioniert, dass Updates funktionieren, dass der Query Optimizer den richtigen Index für einen bestimmten Ausführungsplan verwendet und so weiter. Ein neuer Datentyp bedeutet also einen Bedarf an hundert Tests. Der Code im Produkt ist inzwischen so weit, dass die Einführung eines neuen Datentypen ziemlich einfach ist. Es gibt interne Strukturen zur Unterstützung von Datentypen, und der meiste Code kann das nutzen. In den letzten Jahren haben wir festgestellt, dass sich der Testcode auf einen ähnlichen Stand kommen muss, denn sonst ergeben 1000 Codezeilen eines Entwicklers 10000 Testfälle. Und das skaliert natürlich nicht. Daher sind wir inzwischen so weit, dass der Testcode eine ähnliche Abstraktion und ein ähnliches Modell wie der Produktcode hat. Dadurch können wir vorhandene Teststrukturen viel einfacher auf Erweiterungen im Produkt anpassen. Und daher kommt der Bedarf an guten Softwareentwicklern, das ist eine Herausforderung. In der Datenbankengine kommt dazu, dass der Tester die Technologie und ihre Arbeitsweise tiefgehend verstehen muss um sie zu validieren. Wenn man nur die Oberfläche betrachtet kann man nicht allzu viel erreichen. Daher also der „Software Development Engineer in Test“.

Schaut ein Tester eigentlich auch in den Quellcode, um die Wurzel eines Bugs oder Performanceproblems zu finden? Oder ist das Sache des Entwicklers?

Viele Tester gehen so weit. Da sind wir ein wenig flexibel. Manche Kollegen wollen die Quelle eines Problems finden, andere sagen, ihr Job ist getan wenn sie das Problem identifiziert haben und sie überlassen den Rest dem Entwickler. Die Tester sind da unterschiedlich weit Hardcore. Wir empfehlen, tief zu gehen und zu debuggen.

Für alle Features gibt es verschiedene Testfälle. Testet Ihr da wirklich jeden täglichen Build der Datenbankengine? (Daily Build: Normalerweise wird ein Produkt komplett einmal am Tag kompiliert und in ein Verzeichnislayout wie auf dem Auslieferungs-Datenträger gebracht)

Nicht jeder tägliche Build. Insbesondere die Katmai-Release wurde in kleinen virtuellen Teams erstellt, die die einzelnen Features implementiert haben. Diese Teams bestehen aus verschiedenen Rollen von verschiedenen Gruppen, etwa jemand vom Optimizer, jemand aus der Storage Engine, unterschiedliche Teile der Datenbankengine. Für so ein Team gibt es eine Gruppe von Tests, die sehr oft ausgeführt werden. Manche Tests laufen auf jeder Entwicklermaschine, andere Täglich oder wöchentlich, und sehr umfassende Tests laufen bevor dieses Feature in die SQL Server Haupt-Builds integriert wird. Es wäre zu aufwändig, jeden Test mit jedem Build auszuführen. Daher haben wir diesen mehrschrittigen Prozess.

Verwendet Ihr nur künstliche Tests oder auch echte Workloads von Kunden?

Typischerweise muss man die Dinge von beiden Seiten aus sehen. Für die Ingenieure ist es interessant, sich mit synthetischen Benchmarks und Tests zu beschäftigen, die auf spezifische Aspekte des Problems fokussieren. Aber am Schluss braucht man diese realistische Validierung. Typischerweise schauen wir also zuerst auf sehr spezifische Teile des Produkts. Wenn wir also zum Beispiel Statistiken im Query Optimizer testen dann erstellen wir zuerst Daten mit einer genau bekannten Verteilung, damit wir wissen wenn die Statistiken korrekt sind. Realistische Daten haben jedoch sehr komplexe Verteilungen, und damit müssen wir ebenso testen. Jede Art des Tests hat ein anderes Ziel. Der Ingenieur schreibt einen Test, der ein spezifisches Problem prüft. Er kennt den Test, er weiß was er testet und wenn er fehlschlägt weiß er, was schief läuft. Am Ende müssen wir aber echte Workloads ausführen um zu sehen, wie sich das System in seiner Gesamtheit verhält. Es kann ja sein, dass die Einzelteile gut funktionieren, aber ein Integrationspunkt Probleme macht, wenn alles zusammengefügt wird. Wir machen also beides. Wir versuchen, Kunden-Workloads ins Haus zu bekommen. Wir versuchen, sie auf die wichtigsten Abfragen, Aktionen und Teile zu reduzieren und verwenden sie dann als interne Benchmarks. Wir haben einige davon.

Es gibt ja auch viele externe Tester, wie das TAP Programm, öffentliche Betas, alles was auf Connect (http://connect.microsoft.com) steht. Wie arbeitet ihr damit? Ist es die Aufgabe Deines Teams, externe festgestellte Probleme zu valideren?

Unsere Rolle im Testteam ist es, die Brücke zwischen der Entwicklung und der Kundensicht zu bilden. Daten von Connect, von Hotfixen, aus Foren bekommen wir als Eingabe und überprüfen diese Szenarien. Der große Wert des TAP-Programms ist es zum Beispiel, dass dort Probleme gefunden werden, die wir im Haus nur sehr schwer nachstellen können. Über die Zeit prüfen wir dann, ob wir im Haus ähnliche Bedingungen aufbauen können, damit wir diese Art von Problemen früher finden können. Man braucht wirklich beides: interne und externe Validierung. Es ist auch eine Frage davon, wie gut man das nachstellen kann. Die Kunden haben hunderte Benutzer und Terabytes an Daten. Daraus müssen wir sehr fokussierte Tests erstellen. Das ist ein Prozess, der kontinuierlich weiterentwickelt wird.

Da Du am Test der Datenbankengine arbeitest: Gibt es irgendwelche Features oder Verhaltensweisen in der Datenbankengine von denen Du denkst, dass sie wichtig sind aber viele Kunden das nicht wissen?

Normalerweise versuchen wir, die guten Nachrichten zu überbringen (lacht). Im Query Optimizer haben wir einige Dinge getan, die für Kunden im Data Warehousing Bereich und für große Datenbanken sehr nützlich sind. Insbesondere ist da die verbesserte Parallelität bei Abfragen über partitionierte Tabellen zu nennen. Kunden mit partitionierten Tabellen auf Maschinen mit vielen Prozessorkernen sollten einen signifikanten Performancevorteil sehen, in einigen Fällen um Faktoren.

Aus Test-Sicht ist es immer unsere Aufgabe sicherzustellen, dass Fortschritte die wir einbauen einen insgesamt positiven Effekt haben – ohne Regressionen zur Folge zu haben. Das ist manchmal ein Kompromiss: In den häufigen Szenarien sollte immer eine Verbesserung zu sehen sein, und wenn es dadurch in anderen Bereichen Verschlechterungen gibt, dann dürfen die nur in Randszenarien auftreten und nicht das Kundenerlebnis negativ beeinflussen.

Ich kann Dir dazu eine Grafik zeigen: Das ist ein zufälliger Punkt während der Entwicklung von SQL Server 2008 (keine CTP oder Release-Version!). Es ist nach dem Punkt, wo die Haupt-Performanceverbesserungen eingecheckt wurden. Das ist nicht repräsentativ für die RTM-Version von SQL Server 2008. Es ist ein Zwischenstand in der Entwicklung.

clip_image002[4]

Die Grafik ist so zu lesen: Jeder Datenpunkt ist eine Abfrage aus einer echten Kunden-Workload. Auf der X-Achse sieht man die Zeit, die die Abfrageausführung dauert. Links sind also sehr schnelle Abfragen, die weniger als eine Minute gebraucht haben, die Abfragen rechts dauerten mehr als eine Stunde. Die Y-Achse zeigt die Performanceverbesserung auf einer logarithmischen Skala. Alles um die 1 auf der Y-Achse ist im Wesentlichen unverändert: Keine Verbesserung, keine Verschlechterung. Viele Abfragen, insbesondere die mit langer Laufzeit sind deutlich schneller geworden, bis zu zehn Mal so schnell. Das liegt an den Performanceverbesserungen für große Datenbanken. Dann siehst Du einige Abfragen zwischen 0,5 und 1. Das liegt an einem grundsätzlichen Problem der Abfrageoptimierung: Es ist unmöglich, fundamentale Verbesserungen einzupflegen ohne ein gewisses Maß an Regression bei anderen Abfragen zu bekommen. Um einen besseren Ausführungsplan zu bekommen muss man mehr arbeiten, und daher verlängert sich die Kompilierzeit in einigen Fällen. Das kann bei einigen Abfragen einen signifikanten Anteil an der Ausführungszeit darstellen. Aber für Abfragen mit langer Ausführungszeit können wir es uns leisten, etwas länger zu kompilieren. Unser Job ist es, bei jedem Release ein angemessenes Bild in dieser Grafik zu haben. Wie schon gesagt, die abgebildete Grafik war während der Entwicklung: Es gibt da noch ein paar Ausreißer nach unten, die wir in der Folge behoben haben. Mehr findet sich in diesem Dokument: http://sites.computer.org/debull/A08mar/giakoumakis.pdf

Danke, ich verstehe. Am Ende ist es doch so: Sobald man Programmcode zu irgendeinem Programm hinzufügt fügt man auch mehr Prozessortakte hinzu, die ausgeführt werden müssen.

Genau. Und in Datenbanken ist das ein statistisches Problem, denn die Eingaben sind statistisch verteilt, der Optimizer verwendet Näherungsalgorithmen. Man kann nicht immer die bestmögliche Lösung finden, man muss eine „gut genug“ Lösung finden. Daher sind die Folgen für eine einzelne Abfrage nicht immer positiv.

Wenn Du an die Kundenworkloads denkst, die Ihr untersucht: Gibt es da Dinge, die die Kunden nicht mehr tun sollten, weil sie den Optimizer und die Verbesserungen, die Ihr eingebaut habt behindern?

Ja, es gibt einige „bad practices“, die unglücklicherweise aus der Reichhaltigkeit der SQL-Sprache resultieren und die eine ordentliche Arbeit des Query Optimizers verhindern. Dazu gehören komplexe Ausdrücke in einer Abfrage. Die vereinfachen zwar die Programmierung, aber es ist schwerer für den Optimizer, solche Ausdrücke abzuschätzen. Wenn man zum Beispiel schreibt WHERE colC + 10 > 5, so ist es für den Optimizer schwer zu wissen, was colC + 10 ist. Es ist viel einfacher, wenn da WHERE colC > -5 steht. Das ist jetzt ein sehr einfaches Beispiel. Aber grundsätzlich gilt: Je komplexer die Ausdrücke, desto schwerer ist die Aufgabe der Abfrageoptimierung. Für einfache Abfragen oder für Abfragen mit geringen Datenmengen ist das nicht wirklich wichtig. Aber insbesondere für Abfragen über große Datenbestände sollten die Ausdrücke so einfach wie möglich gehalten werden. Komplexe Ausdrücke kann der Optimizer kaum abschätzen. Mit abschätzen meine ich: Wie viele Zeilen betrifft die Abfrage, wie viele Zeilen werden gefiltert und so weiter. Schlecht sind auch lokale Variablen in teuren Abfragen, sowas wie DECLARE @var; SET @var = wert;. Dieser Ausdruck wird zur Laufzeit ausgewertet. Zur Kompilierzeit hat der Compiler sehr wenige Informationen über den Wert dieser Variable. Er kann also nur raten. Wenn hingegen die Variable von einer Stored Procedure kommt, dann wird sie zur Kompilierzeit ausgewertet und die Variable hat eine sehr gute Schätzung. Das sind wohlbekannte Probleme, über die schon viel gebloggt wurde, aber wir sehen so etwas immer noch. Mehr Informationen gibt es auch in unserem Blog: http://blogs.msdn.com/sqlqueryprocessing

Wie bist Du aus dem sonnigen Griechenland hierher gekommen, wo es normalerweise regnet?

Ich war schon in anderen wolkigen Orten. Ich habe für Digital und dann Compaq in der Nähe von London gearbeitet. Ich habe bereits in England studiert und dann da vier Jahre gearbeitet. Ich habe schon als Kind viel mit Computern gespielt und habe schon damals davon geträumt, zu Microsoft zu kommen. Später habe ich mich dann einfach beworben.

Hast Du ein Verhältnis zwischen der Anzahl Entwickler und der Anzahl Tester in der SQL Produktgruppe?

Wir haben ein Ziel: Für je 10 Entwickler soll es 7-8 Tester geben. Das ist eine ziemlich hohe Zahl. Der Grund ist, dass Tester hier eine etwas andere Rolle haben als in anderen Firmen oder bei anderen Produkten. Wir beeinflussen die Entwicklung vom ersten Tag des Softwaredesigns bis zur Fertigstellung, wir haben zusätzliche Aufgaben die in anderen Produkten unnötig sind.

Diese Zahl ist schwer einzuhalten, denn wir wollen die Besten und Klügsten haben. Die Rolle des Testers wird aber manchmal als zweitklassig wahrgenommen. Daher ist es kompliziert, gute Mitarbeiter zu überzeugen, dass sie in dieser Test-Rolle bis auf die höchsten Karrierestufen wachsen können, dass sie auch Einfluss haben, das Design vorantreiben indem sie es überprüfen. Für einen Manager, der sein Team besetzen will ist das ein schwieriges Problem.

Tester sind also bereits Teil bei der Spezifikation von neuen Features?

Ja. Für jedes Feature gibt es ein virtuelles Team, mit Mitarbeitern aus verschiedenen Komponenten des Produkts und aus verschiedenen Rollen. Dieses Team definiert den Umfang des Features – wir nennen das Verbesserung („improvement“), es gibt mehrere Features in einem Improvement – und bewertet die Spezifikation. Wenn die Spezifikation definiert ist überlegen sich die Entwickler das Design und erstellen Design-Spezifikationen, die Tester überlegen, wie es getestet werden kann. Oft müssen wir die Funktionalität verbessern um sie besser testbar zu machen. Auch wie der Support durch CSS (den Microsoft Support) später aussehen kann ist wichtig. All das gehört dazu, die Kundenprobleme zu lösen und ist Teil der Erfolgskriterien, wenn das Feature fertig ist. Wir brauchen also Mitarbeiter aus allen Rollen, die Experten für das Feature werden, es vorantreiben, es später weiterentwickeln und supporten können. So funktioniert im Grundsatz der Entwicklungsprozess bei SQL Server.

Danke für Deine Zeit, Leo

More Posts Next page »
 
Page view tracker