438 Stimmen

SQL Server Profiler - Wie filtere ich den Trace, um nur Ereignisse aus einer Datenbank anzuzeigen?

Wie kann ich eine SQL Server Profiler-Ablaufverfolgung auf eine bestimmte Datenbank beschränken? Ich kann nicht erkennen, wie ich den Trace filtern kann, damit ich keine Ereignisse für alle Datenbanken auf der Instanz sehe, mit der ich mich verbinde.

651voto

Gulzar Nazim Punkte 51098

Wählen Sie unter Trace-Eigenschaften > Registerkarte Ereignisauswahl > Alle Spalten anzeigen. Unter Spaltenfilter sollten Sie nun den Datenbanknamen sehen. Geben Sie den Datenbanknamen für den Abschnitt "Wie" ein, und Sie sollten nur die Aufzeichnungen für diese Datenbank sehen.

48voto

Todd Price Punkte 2494

In SQL 2005 müssen Sie zunächst die Spalte Datenbankname in Ihrer Ablaufverfolgung anzeigen. Am einfachsten ist es, die Tuning-Vorlage zu wählen, in der diese Spalte bereits enthalten ist.

Angenommen, Sie haben die Vorlage Tuning ausgewählt, um zu filtern:

  • Klicken Sie auf die Registerkarte "Ereignisauswahl".
  • Klicken Sie auf die Schaltfläche "Spaltenfilter".
  • Markieren Sie Alle Spalten anzeigen (rechte Seite nach unten)
  • Wählen Sie "Datenbankname", klicken Sie im rechten Fenster auf das Plus neben "Wie" und geben Sie Ihren Datenbanknamen ein.

Ich speichere den Trace immer in einer Tabelle, damit ich nachträglich LIKE-Abfragen mit den Trace-Daten durchführen kann.

9voto

Durch ein Experiment konnte ich dies beobachten:

Wenn SQL Profiler 2005 oder SQL Profiler 2000 mit einer Datenbank in SQLServer 2000 verwendet wird, bleibt das Problem bestehen, aber wenn SQL Profiler 2005 mit einer SQLServer 2005 Datenbank verwendet wird, funktioniert es perfekt!

Zusammenfassend lässt sich sagen, dass das Problem offenbar in SQLServer 2000 auftritt und in SQLServer 2005 behoben wurde.

Die Lösung für das Problem im Zusammenhang mit SQLServer 2000 ist (wie von wearejimbo erklärt)

  1. Ermitteln Sie die DatabaseID der Datenbank, die Sie filtern möchten, indem Sie die Tabelle sysdatabases wie folgt abfragen

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
  2. Verwenden Sie den DatabaseID Filter (anstelle von DatabaseName) im Fenster New Trace von SQL Profiler 2000

5voto

6dev6il6 Punkte 745

Klicken Sie in den Trace-Eigenschaften auf die Schaltfläche Auswahl der Ereignisse oben neben der Registerkarte Allgemein . Dann klicken Sie Säulenfilter... unten rechts. Sie können dann auswählen, was gefiltert werden soll, z. B. TextData oder DatabaseName .

Erweitern Sie die Wie und geben Sie Ihren Filter mit dem Prozentsatz % Zeichen wie %MyDatabaseName% oder %TextDataToFilter% . Ohne die %% Zeichen funktioniert der Filter nicht.

Stellen Sie außerdem sicher, dass Sie das Kontrollkästchen Zeilen ausschließen, die keine Werte enthalten' Wenn Sie das Feld, das Sie filtern möchten, nicht finden können, z. B. DatabaseName gehen Sie zum Allgemein und ändern Sie Ihre Vorlage Die leere Datei sollte alle Felder enthalten.

3voto

Erstellen Sie eine neue Vorlage und überprüfen Sie DBname. Verwenden Sie diese Vorlage für Ihre Tracefile.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X