-
Użyj programu SQL Server Profiler (w menu narzędzi w SSMS), aby utworzyć ślad, który rejestruje te zdarzenia:
RPC:Completed SP:Completed SP:StmtCompleted SQL:BatchCompleted SQL:StmtCompleted
-
Możesz zacząć od standardowego szablonu śledzenia i przyciąć go. Nie określiłeś, czy dotyczy to konkretnej bazy danych, czy całego serwera, jeśli dotyczy to konkretnych baz danych, dołącz kolumnę DatabaseID i ustaw filtr na swoją bazę danych (
SELECT DB_ID('dbname')
). Upewnij się, że dla każdego zdarzenia uwzględniono logiczną kolumnę danych Odczyty. Ustaw śledzenie, aby logować się do pliku. Jeśli zostawiasz ten ślad, aby działał bez nadzoru w tle, dobrym pomysłem jest ustawienie maksymalnego rozmiaru pliku śledzenia, powiedzmy 500MB lub 1GB, jeśli masz dużo miejsca (wszystko zależy od tego, ile aktywności jest na serwerze, więc będziesz musiał to ssać i zobaczyć). -
Uruchom na krótko śledzenie, a następnie wstrzymaj go. Przejdź do Plik->Eksportuj->Definicja śledzenia skryptu, wybierz wersję bazy danych i zapisz do pliku. Masz teraz skrypt sql, który tworzy ślad, który ma znacznie mniejsze obciążenie niż uruchamianie przez GUI profilera. Po uruchomieniu tego skryptu wygeneruje on identyfikator śledzenia (zwykle
@ID=2
); zanotuj to. -
Gdy masz plik śledzenia (.trc) (albo śledzenie zostało zakończone z powodu osiągnięcia maksymalnego rozmiaru pliku, albo zatrzymałeś uruchomione śledzenie za pomocą
EXEC sp_trace_setstatus @ID, 0
EXEC sp_trace_setstatus @ID, 2
Możesz załadować ślad do profilera lub użyć ClearTrace (bardzo przydatne) lub załadować go do tabeli w następujący sposób:
SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)
Następnie możesz uruchomić zapytanie, aby zagregować dane, takie jak to:
SELECT COUNT(*) AS TotalExecutions,
EventClass, CAST(TextData as nvarchar(2000))
,SUM(Duration) AS DurationTotal
,SUM(CPU) AS CPUTotal
,SUM(Reads) AS ReadsTotal
,SUM(Writes) AS WritesTotal
FROM TraceTable
GROUP BY EventClass, CAST(TextData as nvarchar(2000))
ORDER BY ReadsTotal DESC
Po zidentyfikowaniu kosztownych zapytań możesz wygenerować i zbadać rzeczywiste plany wykonania.