Probleme im Griff mit Extended Events

Besonders bei komplexen Planungsanwendungen oder umfangreicheren ETL-Vorgängen erschließen sich manche SQL-Server-Probleme nur bei genauer Betrachtung aller involvierten Faktoren. Ist reines „Logging“ nicht mehr genug oder kommt eine Live-Betrachtung in Frage, sollte statt zu dem Tool „SQL Server Profiler“ zu dem Tool „Extended Events“ gegriffen werden. „Extended Events“ ist seit dem SQL Server 2008 verfügbar und ab dem SQL Server 2012 direkt integriert.

In diesem Beitrag zeigen wir, welche Möglichkeiten mit „Extended Events“ zur Verfügung stehen. Dabei erläutern wie anhand von Praxisbeispielen die Vorgehensweise. weiterlesen…

SQLCMD – Das kleine Schweizer Taschenmesser für die Kommandozeile

In diesem Beitrag erläutern wir die Funktionsweise und die Einsatzmöglichkeiten von SQLCMD. SQLCMD ist ein kleines Hilfsprogramm, das über den OLEDB Provider eine Verbindung zum SQL-Server aufbaut. Es übermittelt SQL-Kommandos und -Skripte, ohne dass das Microsoft SQL Management Studio erforderlich ist. Wir erklären den grundsätzlichen Syntaxaufbau und zeigen gängige Statements. Anhand von einigen Beispielen stellen wir zudem die Einsatzmöglichkeiten vor. weiterlesen…

Minerva: Die Bissantz-Codebibliothek

In diesem Beitrag geht es um die kleine Anwendung „Minerva“, die Consultants bei Bissantz in Projekten nutzen, um auch offline auf eine zentrale Sammlung von SQL- und MDX-Code-Snippets zuzugreifen. Wir geben einen kurzen Überblick über Installation, Funktionalität und Architektur von Minerva. weiterlesen…

Schlüssel sind wichtig. Manchmal aber auch störend.

In unseren mit dem DeltaMaster Modeler aufgebauten Datenbanken existieren auf allen Dimensions- und Faktentabellen Schlüssel- und Fremdschlüsselbeziehungen. Diese Tatsache ist unerlässlich, will man im Anschluss eine funktionierende OLAP Datenbankarchitektur aufbauen. Jedoch kommt es zuweilen vor, dass gerade in großen und umfangreichen nächtlichen Transformprozessen genau eine, im Idealfall sogar isoliert betrachtbare, Befüllungsprozedur eine Schlüsselverletzung hervorruft. weiterlesen…

SUM-Where OVER the rainbow

Bereits 2007 haben wir uns in unserem Blog Gedanken gemacht, wie lange OLAP-Datenbanken wohl noch überleben werden. Im Zeitalter des DeltaMaster ImportWizzard kommt man auch tatsächlich ab und an ins Grübeln, wozu man diese Form der Datenbanken überhaupt noch benötigt? Bei genauer Betrachtung findet man aber schnell zahlreiche Gründe, warum wir immer noch lieber Würfel als Tabellen bauen. Neben dem deutlich schnelleren Aggregationsverhalten einer multidimensionalen Datenbank zählt auch die MDX-Zeitintelligenz nach wie vor zu den Pluspunkten. Relational Kumulieren beispielsweise erzeugt bei einem T-SQL-Programmierer nach wie vor ein flaues Gefühl in der Magengegend.
2012 ist jetzt auch Microsoft auf die Idee gekommen und sagt ihrer eigenen OLAP-Datenbank den Kampf an. Mit dem neuen „Tabular Mode“ und der Abfragesprache DAX des SQL Servers 2012 gibt Microsoft ein deutliches Statement für relationale Datenbanken ab. Im Zuge dessen wurden auch Implementierungslücken bereits existierender T-SQL-Befehle behoben, so dass künftig eine relationale Kumulation einem Programmierer nur noch ein müdes Lächeln ins Gesicht zaubern wird.
Wenn Sie wissen wollen wie, dann folgen Sie mir einfach auf dem Weg zum Ende des Regenbogens… weiterlesen…

Einsatz von Merge bei Historisierung von Attributen (Teil 2)

In meinem letzten Beitrag lernten wir wie die Inhalte zweier Tabellen, mit Hilfe von “MERGE”, synchronisiert werden können. Heute schauen wir uns an, wie “MERGE” uns bezüglich Historisierung der Daten behilflich sein kann.
Sicher können Sie sich noch an die Historisierung von Attributen erinnern? (Beitrag vom Juni 2011: Historische Betrachtung von Stammdaten im Data Warehouse).
Dort wurde zusätzlich zu mehreren Lösungsansätzen auch der optimale Ansatz vorgestellt, nämlich das Historisieren durch Zeitbetrachtung. Dabei kamen Update- und Insert-Statements zum Zuge.
Die Ansätze, um Änderungen in Dimensionstabellen zeitbezogen zu erfassen und gegebenenfalls historisch zu dokumentieren, sind auch unter dem Begriff “Slowly Changing Dimensions” Typ 2 (deutsch: sich langsam verändernde Dimensionen) bekannt.
Man kann mit dem MERGE-Befehl von SQL Server 2008 die Pflege einer Typ 2 Slowly Changing Dimension (SCD) in einem Data Warehouse in nur einem Befehl erledigen.
Schauen wir uns einmal alle möglichen Fälle bei einem “Slowly Changing Dimensions” (SCD2) an. weiterlesen…

NOT IN = NOT EXPECTED

Da programmiert man schon Jahrzehnte lang T-SQL und erlebt doch noch Überraschungen bei vermeintlich einfachen Befehlen. Jüngst haben wir in einer Kundenumgebung verschiedene Optimierungen durchgeführt und unter anderem NOT IN Befehle durch LEFT JOINs ausgetauscht. Erwartet haben wir ein identisches Abfrageergebnis bei deutlich besserer Performance. Aber weit gefehlt. Aus einem uns zu dem Zeitpunkt noch nicht bekannten Grund lieferte die „linke Verbindung“ ein vollkommen anderes Ergebnis als das zuvor verwendete IN-Kommando. Nach einer langwierigen Suche, mit wiederholten Zweifeln an der eigenen Fachkompetenz, haben wir den Grund schließlich gefunden. Und wie sich herausgestellt hat, ist dieser selbst für viele „alte Hasen“ überraschend. Also lassen auch Sie sich überraschen und nicht traurig sein – Sie sind in bester Gesellschaft… ;o) weiterlesen…

Partitionierte Tabellen – Faktenladen mit „Fast = TRUE“ (Teil 2)

Uuuund Action! Wie im ersten Teil dieses Beitragsthemas beschrieben, schauen wir uns heute die vorbereiteten partitionierten Tabellen in Aktion an. Im ersten Teil haben wir im SQL Server die notwendigen Partitionierungsobjekte angelegt und diese bereits auf eine Faktentabelle angewendet. Im zweiten Teil versuchen wir jetzt, neue Daten in die Faktentabelle zu importieren. Dies geschieht nicht wie sonst üblich per DELETE und INSERT, sondern mit einem sogenannten „Partition Swap“. Der vorliegende Artikel zeigt die notwendige Syntax, beleuchtet die Restriktionen und zeigt wie viel Optimierung die Partitionierung wirklich bringt. weiterlesen…

Partitionierte Tabellen – Faktenladen mit „Fast = TRUE“ (Teil 1)

Das sagenumwobene Flag „Fast = TRUE“ hat sich wohl jeder IT-ler in seinem Leben schon einmal gewünscht. Microsoft verspricht spätestens ab SQL-Server-Version 2005 eine Option, die diesem Flag schon ziemlich nahe kommt. Die Rede ist hier von der Möglichkeit, Tabellen zu partitionieren. Dies soll deutliche Performancegewinne insbesondere beim Laden und Verwalten von umfangreichen Faktendaten ermöglichen. Der Clou daran ist, dass einzelne Tabellenpartitionen einer Faktentabelle einfach gegen eine strukturidentische Deltatabelle ausgetauscht werden können. Bei dieser Operation werden lediglich Metadaten verändert, was nur einen Bruchteil der Zeit eines echten Datenimports benötigen soll.
Die Restriktionen, das allgemeine Vorgehen sowie die tatsächlichen Performancegewinne beim Partitionieren werden in Teil 1 und 2 des nachfolgenden Artikels betrachtet. weiterlesen…