Freigeben über


Ablaufverfolgungen mit SQL Server Profiler anzeigen und analysieren

Gilt für:SQL ServerAzure SQL Managed Instance

Verwenden Sie SQL Server Profiler , um aufgezeichnete Ereignisdaten in einer Ablaufverfolgung anzuzeigen. SQL Server Profiler zeigt Daten je nach definierten Ablaufverfolgungseigenschaften an. Eine Möglichkeit, SQL Server -Daten zu analysieren, besteht darin, die Daten in ein anderes Programm wie SQL Server oder den Optimierungsratgeber von Datenbank-Engine zu kopieren. Datenbank-Engine Wenn bei der Ablaufverfolgung die Text -Datenspalte einbezogen wird, kann der Optimierungsratgeber eine Ablaufverfolgungsdatei mit SQL-Batch- und RPC-Ereignissen verwenden. Verwenden Sie die im Lieferumfang von SQL Server Profiler enthaltene vordefinierte Optimierungsvorlage, um sicherzustellen, dass für den Datenbankoptimierungsratgeber von die richtigen Ereignisse und Spalten aufgezeichnet werden.

Wenn Sie eine Ablaufverfolgung mithilfe von SQL Server Profiler öffnen, muss die Ablaufverfolgungsdatei nicht über die Dateierweiterung ".trc" verfügen, wenn die Datei entweder von SQL Server Profiler oder vom SQL Trace-System gespeicherten Prozeduren erstellt wurde.

SQL Server Profiler kann auch SQL-Ablaufverfolgungsdateien .log und generische SQL-Skriptdateien lesen. Geben Sie beim Öffnen einer SQL-Ablaufverfolgungsdatei .log, die keine Dateierweiterung wie .log aufweist, trace.txt, als Dateiformat SQLTrace_Log an.

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

Probleme mit Daten beheben

Mit SQL Server Profilerkönnen Sie die Problembehandlung für Daten ausführen, indem Sie Ablaufverfolgungen oder Ablaufverfolgungsdateien nach der Datenspalte Duration, CPU, Readsoder 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.

Wenn die Ablaufverfolgungen in Tabellen gespeichert werden und Transact-SQL zum Abfragen der Ereignisdaten verwendet wird, stehen zusätzliche Informationen zur Verfügung. 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);

Der Server meldet die Dauer eines Ereignisses in Mikrosekunden (10^-6 einer Sekunde) und den Umfang der vom Ereignis verbrauchten CPU-Zeit in Millisekunden (10^-3 einer Sekunde). In SQL Server Profiler zeigt die grafische Benutzeroberfläche die Duration -Spalte standardmäßig in Millisekunden an. Wird jedoch eine Ablaufverfolgung entweder in einer Datei oder in einer Datenbanktabelle gespeichert, wird der Wert der Duration -Spalte in Mikrosekunden aufgezeichnet. Diese Messungen sind für Transact-SQL (T-SQL)-Abfragen.

Objektnamen bei der Betrachtung von Ablaufverfolgungen anzeigen

Wenn Sie statt des Objektbezeichners (ObjectID) lieber den Namen eines Objekts anzeigen möchten, müssen Sie zusammen mit der Datenspalte ObjectName 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 anschließend 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, DatabaseIDund ObjectID und erst anschließend nach der IndexID -Datenspalte gruppieren. Sie müssen in dieser Reihenfolge gruppieren, da Objekt- und Index-IDs nicht zwischen Servern und Datenbanken (und unter Objekten für Index-IDs) eindeutig sind.

Suchen bestimmter Ereignisse innerhalb 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, ClientProcessIDund StartTime auf. Weitere Informationen finden Sie unter Erstellen einer Ablaufverfolgung (SQL Server Profiler).

    • Gruppieren Sie die erfassten Daten nach der Datenspalte Ereignisklasse, und erfassen Sie die Ablauffolge in einer Datei oder Tabelle. Um die erfassten Daten zu gruppieren, wählen Sie auf der Registerkarte "Ereignisauswahl" des Dialogfelds "Ablaufverfolgungseigenschaften" die Option "Spalten organisieren" aus. Weitere Informationen finden Sie unter Anordnen der in einem Trace (SQL Server Profiler) angezeigten Spalten.

    • 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.

    • Öffnen Sie die Ablaufverfolgungsdatei oder -tabelle, und erweitern Sie den Knoten der gewünschten Ereignisklasse, z.B. Deadlock Chain. Weitere Informationen finden Sie unter Öffnen einer Ablaufverfolgungsdatei (SQL Server Profiler) oder Öffnen einer Ablaufverfolgungstabelle (SQL Server Profiler).

    • Durchsuchen Sie die Ablaufverfolgungsdaten, bis Sie die gesuchten Ereignisse finden (verwenden Sie den Befehl "Suchen " im Menü " Bearbeiten " von SQL Server Profiler, um Werte in der Ablaufverfolgung zu finden). Beachten Sie bei den Ereignissen, für die Sie die Ablaufverfolgung durchführen, die Werte in den Datenspalten ClientProcessID und StartTime .

  3. Zeigen Sie die Ereignisse im Kontext an.

    • Anzeigen Sie die Eigenschaften der Ablaufverfolgung, und gruppieren Sie nach der ClientProcessID-Datenspalte anstatt nach der Datenspalte Ereignisklasse.

    • Erweitern Sie die Knoten für jede einzelne Clientprozess-ID, die Sie anzeigen möchten. Durchsuchen Sie die Ablaufverfolgung manuell, oder verwenden Sie "Suchen" , bis Sie die zuvor angegebenen Startzeitwerte der Zielereignisse gefunden haben. Die Ereignisse werden in chronologischer Reihenfolge mit den anderen Ereignissen angezeigt, die zu den einzelnen ausgewählten Client-Prozess-IDs gehören. Beispielsweise werden die Deadlock - und Deadlock Chain-Ereignisse , die in der Ablaufverfolgung erfasst werden, unmittelbar nach den SQL:BatchStarting-Ereignissen innerhalb der erweiterten Clientprozess-ID angezeigt.

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, ApplicationNameoder einer anderen Ereignisklasse, um zugehörige Aktivitäten in chronologischer Reihenfolge anzuzeigen.