Gibt es eine Möglichkeit, eine SQL Profiler-Ablaufverfolgung zu filtern?

8

Ich versuche, Dieses Problem mit SQL Profiler (SQL 2008)

Nach einigen Tagen, in denen die Ablaufverfolgung in der Produktion ausgeführt wurde, ist der Fehler schließlich erneut aufgetreten, und jetzt versuche ich, die Ursache zu ermitteln. Das Problem ist, dass der Trace 400k Zeilen hat, von denen 99,9% von "Report Server" stammen, von denen ich nicht einmal weiß, warum sie läuft, aber es scheint jeden Sekunde SQL Server zu pingen ...

Gibt es eine Möglichkeit, einige Datensätze aus dem Trace herauszufiltern, um den Rest sehen zu können?
Kann ich dies mit der aktuellen .trc-Datei tun, oder muss ich die Ablaufverfolgung erneut ausführen?
Gibt es andere Anwendungen, um die .trc-Datei zu betrachten, die mir diese Funktionalität geben kann?

    
Daniel Magliola 21.09.2009, 02:58
quelle

5 Antworten

18

Sie können eine erfasste Ablaufverfolgung in SQL Server Profiler laden: Anzeigen und Analysieren von Ablaufverfolgungen mit SQL Server Profiler .

Oder Sie können in ein Tool wie ClearTrace (kostenlose Version) laden, um eine Workload-Analyse durchzuführen.

Sie können wie folgt in eine SQL Server-Tabelle laden:

%Vor%

Dann können Sie eine Abfrage ausführen, um die Daten wie diese zu aggregieren:

%Vor%

Siehe auch: MS SQL Server 2008 - Wie kann ich die teuersten Abfragen protokollieren und finden?

Es ist auch üblich, vor dem Start Filter für die aufgezeichnete Kurve einzurichten. Ein häufig verwendeter Filter ist beispielsweise die Beschränkung auf Ereignisse, die mehr als eine bestimmte Anzahl von Lesevorgängen erfordern, z. B. 5000.

    
Mitch Wheat 21.09.2009, 03:03
quelle
3

Laden Sie die .trc lokal und dann Verwenden Sie Speichern in der Datenbank zu lokalen db und dann nach Ihrem Herzen Inhalt abfragen.

    
Preet Sangha 21.09.2009 03:00
quelle
3

Diese Vorschläge eignen sich hervorragend für eine vorhandene Ablaufverfolgung. Wenn Sie die Ablaufverfolgung filtern möchten, können Sie Ereignisfilter für die Ablaufverfolgung einrichten, bevor Sie sie starten.

Nach meiner Erfahrung ist der nützlichste Filter der Anwendungsname. Dazu müssen Sie sicherstellen, dass jede Verbindungszeichenfolge, die für die Verbindung mit Ihrer Datenbank verwendet wird, einen entsprechenden Wert für den Anwendungsnamen enthält, dh:

"... Server = MYDB1; Integrierte Authentifizierung = SSPI; Anwendungsname = MyPortal; ..."

Wählen Sie in den Trace-Eigenschaften für eine neue Ablaufverfolgung die Registerkarte Ereignisauswahl und klicken Sie dann auf Spaltenfilter ...

Wählen Sie den ApplicationName-Filter und fügen Sie LIKE Werte hinzu, um nur die von Ihnen angegebenen Verbindungen einzuschließen, dh die Verwendung von MyPortal im Feld LIKE umfasst nur Ereignisse für Verbindungen mit diesem Anwendungsnamen.

Dies wird Sie davon abhalten, die ganze Unannehmlichkeit, die Reporting Services generiert, zu sammeln und die nachfolgende Analyse viel schneller zu machen.

Es gibt auch viele andere Filter, also wenn Sie wissen, wonach Sie suchen, wie lange Ausführung (Dauer) oder große IO (Lesen, Schreiben), dann können Sie auch filtern.

    
Sam 21.09.2009 04:57
quelle
2

Seit SQL Server 2005 können Sie den Inhalt einer .trc-Datei direkt aus SQL Profiler filtern. ohne es in eine SQL-Tabelle zu importieren. Befolgen Sie einfach die hier vorgeschlagene Vorgehensweise:

Ссылка

Ein zusätzlicher Hinweis: Sie können '%' als Filter-Platzhalter verwenden. Wenn Sie beispielsweise nach HOSTNAME wie SRV filtern möchten, können Sie SRV% verwenden.

    
Anonymous 31.07.2013 16:12
quelle
0

Hier finden Sie ein vollständiges Skript zum Abfragen des Standard-Trace mit der vollständigen Liste der Ereignisse, die Sie filtern können:

Ссылка


Sie müssen sys.fn_trace_gettable (@ TraceFileName, Standard) abfragen, indem Sie sys.trace_events beitreten, um Ereignisnummern zu dekodieren.

    
Paolo 18.06.2013 09:44
quelle