Wie beschränke ich einen SQL Server Profiler-Trace auf eine bestimmte Datenbank? Ich kann nicht sehen, wie der Trace gefiltert wird, um nicht Ereignisse für alle Datenbanken der Instanz anzuzeigen, zu der ich eine Verbindung herstelle.
Wie beschränke ich einen SQL Server Profiler-Trace auf eine bestimmte Datenbank? Ich kann nicht sehen, wie der Trace gefiltert wird, um nicht Ereignisse für alle Datenbanken der Instanz anzuzeigen, zu der ich eine Verbindung herstelle.
Antworten:
Wählen Sie unter Trace-Eigenschaften> Registerkarte Ereignisauswahl> Alle Spalten anzeigen aus. Unter Spaltenfiltern sollte nun der Datenbankname angezeigt werden. Geben Sie den Datenbanknamen für den Abschnitt "Gefällt mir" ein und Sie sollten nur Traces für diese Datenbank sehen.
before
um die Spur zu starten. Wenn Sie es danach tun, kann das Feld nicht bearbeitet werden!
In SQL 2005 müssen Sie zuerst die Spalte Datenbankname in Ihrer Ablaufverfolgung anzeigen. Am einfachsten ist es, die Optimierungsvorlage auszuwählen, zu der diese Spalte bereits hinzugefügt wurde.
Angenommen, Sie haben die Tuning-Vorlage ausgewählt, um zu filtern:
Ich speichere den Trace immer auch in einer Tabelle, damit ich nachträglich ähnliche Abfragen zu den Trace-Daten durchführen kann.
Durch Experimente konnte ich Folgendes beobachten:
Wenn SQL Profiler 2005 oder SQL Profiler 2000 mit einer Datenbank in SQLServer 2000 verwendet wird, besteht das erwähnte Problem weiterhin, aber wenn SQL Profiler 2005 mit einer SQLServer 2005-Datenbank verwendet wird, funktioniert es perfekt!
Zusammenfassend scheint das Problem in SQLServer 2000 weit verbreitet und in SQLServer 2005 behoben zu sein.
Die Lösung für das Problem beim Umgang mit SQLServer 2000 lautet (wie von wearejimbo erläutert).
Identifizieren Sie die Datenbank-ID 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
Verwenden Sie den DatabaseID-Filter (anstelle von DatabaseName) im Fenster New Trace von SQL Profiler 2000
Klicken Sie in den Trace-Eigenschaften oben neben Allgemein auf die Registerkarte Ereignisauswahl . Klicken Sie dann unten rechts auf Spaltenfilter . Sie können dann auswählen, was gefiltert werden soll, z. B. oderTextData
DatabaseName
.
Erweitern Sie den Knoten Gefällt mir und geben Sie Ihren Filter mit den Prozentzeichen %
wie %MyDatabaseName%
oder ein %TextDataToFilter%
. Ohne das%%
Zeichen funktioniert der Filter nicht.
Stellen Sie außerdem sicher, dass das Kontrollkästchen Zeilen ausschließen, die keine Werte enthalten. Wenn Sie das zu filternde Feld nicht finden, z. B. DatabaseName
zur Registerkarte Allgemein wechseln und Ihre Vorlage ändern , sollte das leere Feld alle Felder enthalten.
Erstellen Sie eine neue Vorlage und überprüfen Sie den DB-Namen. Verwenden Sie diese Vorlage für Ihre Trace-Datei.