Anzeigen und Analysieren von Ablaufverfolgungen mit SQL Server Profiler

Aktualisiert: 12. Dezember 2006

Mit SQL Server Profiler können Sie die aufgezeichneten Ereignisdaten in einer Ablaufverfolgung anzeigen. In SQL Server Profiler werden die Daten auf der Grundlage der für die Ablaufverfolgung festgelegten Eigenschaften angezeigt. Eine Möglichkeit, SQL Server-Daten zu analysieren, besteht darin, die Daten in ein anderes Programm wie SQL Server 2005 oder den Optimierungsratgeber von Datenbankmodul zu kopieren. Wenn bei der Ablaufverfolgung die Text-Datenspalte einbezogen wird, kann der Optimierungsratgeber von Datenbankmodul eine Ablaufverfolgungsdatei mit SQL-Batch- und RPC-Ereignissen verwenden. Weitere Informationen finden Sie unter Optimieren des physikalischen Datenbankentwurfs. Verwenden Sie die im Lieferumfang von SQL Server Profiler enthaltene vordefinierte Optimierungsvorlage, um sicherzustellen, dass für den Optimierungsratgeber von Datenbankmodul die richtigen Ereignisse und Spalten aufgezeichnet werden.

Wenn Sie mit SQL Server Profiler eine Ablaufverfolgung aufrufen und die Ablaufverfolgungsdatei durch gespeicherte Systemprozeduren von SQL Server Profiler oder der SQL-Ablaufverfolgung erstellt wurde, muss diese Datei nicht die Dateierweiterung TRC tragen.

ms175848.note(de-de,SQL.90).gifHinweis:
SQL Server Profiler kann auch Protokolldateien der SQL-Ablaufverfolgung sowie allgemeine SQL-Skriptdateien lesen. Wenn Sie eine Protokolldatei der SQL-Ablaufverfolgung öffnen, die nicht die Dateierweiterung LOG aufweist (z. B. trace.txt), legen Sie als Dateiformat SQLTrace_Log fest.

Um die Ablaufverfolgungsanalyse zu erleichtern, können Sie das Anzeigeformat für Datum und Uhrzeit in SQL Server Profiler konfigurieren.

Problembehandlung von Daten

Mit SQL Server Profiler können Sie die Problembehandlung für Daten ausführen, indem Sie Ablaufverfolgungen oder Ablaufverfolgungsdateien nach der Datenspalte Duration, CPU, Reads oder Writes in Gruppen zusammenfassen. Zu den Daten, für die Sie eine Problembehandlung durchführen können, gehören beispielsweise Abfragen, deren Ergebnisse nicht zufrieden stellend ausfallen, oder die eine außergewöhnlich hohe Anzahl logischer Lesevorgänge aufweisen.

Zusätzliche Informationen stehen zur Verfügung, wenn die Ablaufverfolgungen in Tabellen gespeichert werden und Transact-SQL für die Abfrage der Ereignisdaten verwendet wird. Wenn Sie z. B. feststellen möchten, welche SQL:BatchCompleted-Ereignisse eine überlange Wartezeit aufweisen, führen Sie Folgendes aus:

SELECT  TextData, Duration, CPU
FROM    trace_table_name
WHERE   EventClass = 12 -- SQL:BatchCompleted events
AND     CPU < (Duration * 1000)
ms175848.note(de-de,SQL.90).gifHinweis:
In SQL Server 2005 meldet der Server die Dauer eines Ereignisses in Mikrosekunden (eine Millionstelsekunde oder 10-6 Sekunden) und die von dem Ereignis benötigte CPU-Zeit in Millisekunden (eine Tausendstelsekunde oder 10-3 Sekunden). In SQL Server 2000 meldete der Server sowohl die Dauer als auch die CPU-Zeit in Millisekunden. In SQL Server 2005 werden in der grafischen Benutzeroberfläche von SQL Server Profiler die Werte in der Spalte Duration standardmäßig in Millisekunden angezeigt. Wird eine Ablaufverfolgung jedoch in einer Datei oder einer Datenbanktabelle gespeichert, wird der Wert in der Spalte Duration in Mikrosekunden angegeben.

Anzeigen von Objektnamen bei der Anzeige von Ablaufverfolgungen

Wenn Sie statt des Objektbezeichners (ObjectID) lieber den Namen eines Objekts anzeigen möchten, müssen Sie zusammen mit der ObjectName-Datenspalte auch die Datenspalten ServerName und DatabaseID aufzeichnen.

Wenn auf der Grundlage der ObjectID-Datenspalte gruppiert werden soll, stellen Sie sicher, dass Sie zuerst nach den Datenspalten ServerName und DatabaseID und erst dann nach der ObjectID-Datenspalte gruppieren. Analog müssen Sie, wenn Sie auf der Grundlage der IndexID-Datenspalte gruppieren möchten, sicherstellen, dass Sie zuerst nach den Datenspalten ServerName, DatabaseID und ObjectID und erst dann nach der IndexID-Datenspalte gruppieren. Diese Reihenfolge muss beim Gruppieren eingehalten werden, weil die Objekt- und Index-IDs für die verschiedenen Server und Datenbanken (und die Index-IDs für die verschiedenen Objekte) nicht eindeutig erkennbar sind.

Suchen nach bestimmten Ereignissen in einer Ablaufverfolgung

Gehen Sie wie folgt vor, um in einer Ablaufverfolgung nach Ereignissen zu suchen und diese zu gruppieren:

  1. Erstellen Sie eine Ablaufverfolgung.
    • Zeichnen Sie beim Definieren der Ablaufverfolgung neben allen anderen gewünschten Datenspalten auch die Datenspalten EventClass, ClientProcessID und StartTime auf. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen einer Ablaufverfolgung (SQL Server Profiler).
    • Gruppieren Sie die aufgezeichneten Daten nach der EventClass-Datenspalte, und zeichnen Sie die Ablaufverfolgung in einer Datei oder Tabelle auf. Um die aufgezeichneten Daten zu gruppieren, klicken Sie im Dialogfeld Ablaufverfolgungseigenschaften auf der Registerkarte Ereignisauswahl auf Spalten organisieren. Weitere Informationen finden Sie unter Vorgehensweise: Organisieren von in einer Ablaufverfolgung angezeigten Spalten (SQL Server Profiler).
    • Starten Sie die Ablaufverfolgung, und beenden Sie sie nach Ablauf der festgelegten Zeit oder nach Erfassung der festgelegten Anzahl von Ereignissen.
  2. Suchen Sie nach den Zielereignissen.
  3. Zeigen Sie die Ereignisse im Kontext an.
    • Zeigen Sie die Eigenschaften der Ablaufverfolgung an, und gruppieren Sie die Daten nicht auf der Grundlage der EventClass-Datenspalte, sondern nach der ClientProcessID-Datenspalte.
    • Erweitern Sie die Knoten für jede einzelne Clientprozess-ID, die Sie anzeigen möchten. Durchsuchen Sie die Ablaufverfolgung manuell oder mithilfe der Option Suchen, bis Sie die zuvor notierten StartTime-Werte der Zielereignisse finden. Die Ereignisse werden in chronologischer Reihenfolge mit den anderen Ereignissen, die zu den einzelnen ausgewählten Clientprozess-IDs gehören, angezeigt. So folgen z. B. das Deadlock- und das Deadlock Chain-Ereignis, die in der Ablaufverfolgung aufgezeichnet sind, unmittelbar auf die SQL:BatchStarting-Ereignisse in der erweiterten Clientprozess-ID.

Diese Methode kann auch verwendet werden, um nach anderen gruppierten Ereignissen zu suchen. Sobald Sie die gesuchten Ereignisse gefunden haben, gruppieren Sie diese nach der Ereignisklasse ClientProcessID, ApplicationName oder einer anderen Ereignisklasse, um zugehörige Aktivitäten in chronologischer Reihenfolge anzuzeigen.

Siehe auch

Aufgaben

Vorgehensweise: Anzeigen einer gespeicherten Ablaufverfolgung (Transact-SQL)
Vorgehensweise: Anzeigen von Filterinformationen (SQL Server Profiler)
Vorgehensweise: Anzeigen von Filterinformationen (Transact-SQL)
Vorgehensweise: Öffnen einer Ablaufverfolgungsdatei (SQL Server Profiler)
Vorgehensweise: Öffnen einer Ablaufverfolgungsdatei (SQL Server Profiler)
Vorgehensweise: Öffnen einer Ablaufverfolgungstabelle (SQL Server Profiler)

Andere Ressourcen

fn_trace_getinfo (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Geänderter Inhalt:
  • Das Codebeispiel im Abschnitt "Problembehandlung von Daten" wurde korrigiert, wobei Duration-Spalteneinheiten verwendet werden.

05. Dezember 2005

Neuer Inhalt:
  • Am Ende des Abschnitts "Problembehandlung von Daten" einen Hinweis eingefügt, wann in der Duration-Spalte in Ablaufverfolgungen Millisekunden und wann Mikrosekunden angezeigt werden.
Geänderter Inhalt:
  • Das Codebeispiel im Abschnitt "Problembehandlung von Daten" korrigiert, um die Änderung bei den Einheiten in der Duration-Spalte (von Millisekunden in Mikrosekunden) zu kompensieren.