Anzeigen und Analysieren von Ablaufverfolgungen mit SQL Server Profiler

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 mit SQL Server Profiler eine Ablaufverfolgung öffnen und die Ablaufverfolgungsdatei durch gespeicherte Systemprozeduren von SQL Server Profiler oder der SQL-Ablaufverfolgung erstellt wurde, muss diese Datei nicht über die Dateierweiterung TRC verfügen.

Hinweis

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 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)  

Hinweis

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.

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

    • Gruppieren Sie die aufgezeichneten Daten nach der Datenspalte Event Class, und zeichnen Sie die Ablaufverfolgung in einer Datei oder Tabelle auf. Klicken Sie im Dialogfeld „Ablaufverfolgungseigenschaften“ auf der Registerkarte Ereignisauswahl auf Spalten organisieren , um die aufgezeichneten Daten zu gruppieren. Weitere Informationen finden Sie unter 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.

    • Ö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 Daten der Ablaufverfolgung, bis Sie die gesuchten Ereignisse finden (klicken Sie in im Menü Bearbeiten auf Suchen SQL Server Profiler , um nach Werten in der Ablaufverfolgung zu suchen). 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.

    • Zeigen Sie die Eigenschaften der Ablaufverfolgung an, und gruppieren Sie die Daten nicht auf Grundlage der Datenspalte Event Class, sondern nach der Datenspalte ClientProcessID .

    • 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 Start Time-Werte der Zielereignisse finden. Die Ereignisse werden in chronologischer Reihenfolge mit den anderen Ereignissen angezeigt, die zu den einzelnen ausgewählten Client-Prozess-IDs gehören. Beispielsweise werden das Deadlock -Ereignis und das Deadlock Chain-Ereignis, die bei der Ablaufverfolgung aufgezeichnet wurden, innerhalb der erweiterten Client-Prozess-ID sofort nach den SQL:BatchStarting-Ereignissen 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.

Weitere Informationen