Sonntag, 20. März 2011

SQL Server Profiler: gruppieren von Ereignissen

Der SQL Server Profiler leistet eine große Hilfe bei der Optimierung von Datenbanklösungen. Mit dem Tool kann man Ablaufverfolgungen konfigurieren, starten, beenden und aufgezeichnete Ereignisse analysieren.
Es gibt aber Fälle, wenn die Analyse trotz einer geringen Ereignisauswahl und Filtereinschränkung schwierig sein kann und man bei der Benutzung des Dialogs Find nicht vorankommt. In dem Fall sollte man versuchen die Ereignisse nach z.B. DatabaseName, ClientProcessID oder SPID zu gruppieren.
Gruppierung von Ereignissen einrichten
  1. Starten Sie den SQL Server Profiler
  2. Erstellen Sie eine neue Ablaufverfolgung
  3. Wählen Sie gewünschte Ereignisse und Ereignisspalten
  4. Klicken Sie im Fenster Trace Properties auf dem Reiter Events Selection den Knopf Organize Columns… an
  5. Im Fenster Organize Columns verschieben Sie eine Spalte in den Knoten Groups und klicken Sie auf dem Knopf OK

Damit ist die Gruppierung eingerichtet und die Ablaufverfolgung kann gestartet werden.
Aggregierte und gruppierte Sicht
Wenn eine Ablaufverfolgung ausgeführt, angehalten oder beendet wird, kann man immer zwischen aggregierten und gruppierten Sichten im Menü View umschalten (siehe Bild unten).

Eine aggregierte Sicht ermöglicht Zusammenklappen und Aufklappen von allen Ereignissen einer Gruppe. Leider kann man die Sicht nur für die Gruppierung verwenden, die aus einer Spalte besteht.
In einer gruppierten Sicht werden Ereignisse gruppiert nach ausgewählten Spalten angezeigt. Die Sicht kann man für die Gruppierung verwenden, die aus einer oder mehreren Spalten besteht.
Gruppierung von Ereignissen anpassen
Falls eine beendete Ablaufverfolgung aus einer Datei oder Tabelle geöffnet wird, kann die Gruppierung beliebig angepasst werden.
Falls eine Ablaufverfolgung läuft, können die aufgezeichneten Daten neu gruppiert werden, indem die Ablaufverfolgung angehalten, die Gruppierung angepasst und die Ablaufverfolgung wieder gestartet wird.
Falls eine laufende Ablaufverfolgung beendet wird, die Gruppierung angepasst und die Ablaufverfolgung neu gestartet wird, gehen alle aufgezeichneten Daten verloren und die Gruppierung wird nur für die neu aufgezeichneten Daten übernommen.
Hinweis
Beachten Sie bei einer Gruppierung nach DatabaseName:
Wenn Ihre Anwendung mehrere Datenbanken verwendet und im Kontext einer DB die Daten aus einer anderen DB abgefragt werden, wird die Abfrage der DB zugeordnet, in deren Kontext sie ausgeführt wurde (siehe Bild).