Yukon - ein Blick ins Eingemachte

16.03.2005
Von 

Shinja Strasser ist Innovation Manager für digitale Geschäftsmodelle bei der minnosphere GmbH, ein Start-up der msg-Gruppe. Als Mitglied des deutschen Fachjournalisten-Verbands ist er Autor zahlreicher Fachartikel und Bücher und spricht auf Konferenzen.

Ein weiterer interessanter Dienst in SQL Server 2005 sind die "Notification Services". Sie stellen ein Benachrichtigungssystem bereit, das Nachrichten generieren und personalisiert beziehungsweise zeitgerecht an verschiedene Benutzer oder Geräte senden kann. Die Benachrichtigung zu einem Ereignis kann unmittelbar erfolgen oder nach einem festen Zeitplan, je nachdem, wie der einzelne Benutzer die Benachrichtigung abonniert hat. Ein weiterer Vorteil der Notification Services ist, dass dieser Dienst Daten-Spam verhindert, da die Nachrichten personalisiert abonniert sind und zeitgerecht zugestellt werden.

Nicht mehrfach kompilieren

Eine weitere Neuerung ist die Common Table Expression (CTE). Sie löst das Problem, dass alle Rekursionen einer Abfrage vom SQL Server kompiliert werden. Mit CTE wird die Abfrage einmal kompiliert und dann rekursiv ausgeführt. Sie basiert auf einem temporären Resultset, das von einer regulären SELECT-Abfrage erzeugt wurde und einen fest definierten Namen besitzt. Dieses temporäre Resultset kann in jeder SELECT-, INSERT-, UPDATE- oder DELETE-Abfrage verwendet werden, die innerhalb einer CTE beziehungsweise im gleichen Batch ausgeführt wird. Eine CTE wird einmal definiert und kann später pro Abfrage ein- oder mehrmals Referenzen auf sich selbst bilden. Diese rekursive Fähigkeit ist der wesentliche Vorteil einer CTE.

Mit dem SQL Server 2005 kommen auch zwei neue relationale Operatoren für Tabellen: Pivot und Unpivot. Beide ermöglichen es dem Datenbankentwickler, innerhalb der Abfragelogiken einfacher mit Metadaten arbeiten zu können. Der Pivot-Operator ordnet die Zeilen als Spalten an, der Unpivot-Operator ordnet Spalten als Zeilen an. Somit ist es möglich, in einer Abfrage Jagged Tables (jede Datenzeile besitzt eine unterschiedliche Anzahl von Spalten) abzubilden.