SQL Server Profiler - Jak filtrować dane śledzenia, aby wyświetlać zdarzenia tylko z jednej bazy danych?

381

Jak ograniczyć śledzenie programu SQL Server Profiler do określonej bazy danych? Nie widzę sposobu filtrowania śledzenia, aby nie wyświetlać zdarzeń dla wszystkich baz danych w instancji, z którą się łączę.

ConcernedOfTunbridgeWells
źródło

Odpowiedzi:

574

W obszarze Właściwości śledzenia> karta Wybór zdarzeń> wybierz pokaż wszystkie kolumny. Teraz pod filtrami kolumn powinieneś zobaczyć nazwę bazy danych. Wpisz nazwę bazy danych dla sekcji Like, a powinieneś zobaczyć ślady tylko dla tej bazy danych.

Gulzar Nazim
źródło
8
Nie wiem, czy jest to powszechny problem, ale po uruchomieniu profilera nazwa bazy danych jest pusta dla wielu śledzonych wartości. Muszę użyć kolumny DatabaseID i znaleźć prawidłowe wartości do wprowadzenia, przeszukując tabelę sysdatabases w głównej bazie danych
Jim Birchall,
34
Aby znaleźć DatabaseID: SELECT [nazwa], [dbid] FROM [master]. [Dbo]. [Sysdatabases] ORDER BY [nazwa]
Simon
1
Zależy również od wybranego szablonu, jeśli taki istnieje. +1
beaudetious
2
I musisz to zrobić, beforerozpoczynając śledzenie. Jeśli zrobisz to później - pola nie będzie można edytować!
DarkWalker
2
Nie zapomnij zatrzymać śledzenia lub rozpocząć przed uruchomieniem.
Fery
42

W SQL 2005 najpierw musisz wyświetlić kolumnę Nazwa bazy danych w swoim śladzie. Najłatwiej jest wybrać szablon Tuning, który ma już tę kolumnę.

Zakładając, że masz wybrany szablon dostrajania, aby filtrować:

  • Kliknij kartę „Wybór zdarzeń”
  • Kliknij przycisk „Filtry kolumn”
  • Zaznacz Pokaż wszystkie kolumny (prawa strona w dół)
  • Wybierz „DatabaseName”, kliknij znak plus obok Like w prawym panelu i wpisz nazwę bazy danych.

Zawsze zapisuję również ślad w tabeli, aby po fakcie móc wykonać zapytania JAK na danych śledzenia.

Todd Price
źródło
8

Dzięki eksperymentowi mogłem to zaobserwować:

Kiedy SQL Profiler 2005 lub SQL Profiler 2000 jest używany z bazą danych rezydującą w SQLServer 2000 - wspomniany problem występuje nadal, ale gdy SQL Profiler 2005 jest używany z bazą danych SQLServer 2005, działa idealnie!

Podsumowując, problem wydaje się występować w SQLServer 2000 i został naprawiony w SQLServer 2005.

Rozwiązaniem problemu związanego z SQLServer 2000 jest (jak wyjaśniono wearejimbo)

  1. Zidentyfikuj identyfikator bazy danych bazy danych, którą chcesz filtrować, sprawdzając tabelę sysdatabases, jak pokazano poniżej

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
  2. Użyj filtru DatabaseID (zamiast DatabaseName) w oknie New Trace programu SQL Profiler 2000

Praveen
źródło
4

We właściwościach śledzenia kliknij kartę Wybór zdarzeń u góry obok Ogólne . Następnie kliknij Filtry kolumnowe ... w prawym dolnym rogu. Następnie możesz wybrać elementy do filtrowania, takie jak TextDatalub DatabaseName.

Rozwiń węzeł Like i wprowadź filtr ze %znakami procentowymi, takimi jak %MyDatabaseName%lub %TextDataToFilter%. Bez %%znaków filtr nie będzie działać.

Ponadto zaznacz pole wyboru Wyklucz wiersze, które nie zawierają wartości ”. Jeśli nie możesz znaleźć pola, które chcesz filtrować, na przykład DatabaseNameprzejdź do karty Ogólne i zmień szablon , puste pole powinno zawierać wszystkie pola.

6dev6il6
źródło
1

Utwórz nowy szablon i sprawdź DBname. Użyj tego szablonu dla swojego pliku śledzenia.


źródło