Bardzo często zachodzi potrzeba uzyskania informacji o bieżących sesjach i procesach zachodzących w silniku bazy danych. Zwykle do wyświetlania tych informacji występujących na instancji SQL Server używa się systemowych procedur składowanych sp_who i sp_who2. Za pomocą tych tych procedur można zidentyfikować sesje blokujące i aktywne.
Oczywiście można do tych celów użyć dynamicznych widoków zarządzania (DMV) i dynamicznych funkcji zarządzania (DMF), aby uzyskać szczegółowe informacje o procesach SQL Server, waitach występujących w dostępie do pamięci i procesora.
Procedury systemowe sp_who i sp_who2
Używając procedury sp_who, można uzyskać informacje o użytkowniku i procesie w tle. Zwracane są informacje, takie jak login, nazwy hostów, polecenia sql, informacje o blokadach, bazie danych, na której działa.
Procedura sp_who2 jest rozszerzeniem procedury sp_who, która zwraca więcej informacji niż procedura sp_who. Jest to procedura nieudokumentowana, ale nadal przydatna. Ta procedura zwraca dodatkowe kolumny takie jak: CPUTime, DiskIO, LastBatch i ProgramName.
Powyższe procedury nie zwracają wielu przydatnych informacji, takich jak informacje o waitach, planach wykonania, czasie trwania.
Procedura Adama Machanica – sp_WhoIsActive
Bardzo przydatną procedurę składowaną jest sp_WhoIsActive napisana i rozwijana przez Microsoft MVP Adam Machanica. Tej procedury można używać począwszy od wersji SQL Server 2005. Procedura ta zbiera dane z różnych DMV i pokazuje informacje w formacie tabelarycznym. Charakteryzuje się ona dużą ilością parametrów, które sterują jej wykonaniem, dużą elastycznością oraz ilością zwracanych informacji.
Kod tej procedury można pobrać z serwisu GitHub .
Zawsze najlepszą praktyką jest sprawdzenie dokumentacji przed użyciem procedury. Można to zrealizować uruchamiając procedurę z argumentem @help = 1. Wyświetlane są następujące informacje.
- Pierwsza sekcja „header” zawiera informacje o wersji, prawach autorskich, e-mailu z opiniami, licencji i adresie URL
- W drugiej części „parameter” pokazuje dostępne parametry, ich opis oraz domyślne informacje
- Ostatnia sekcja pokazuje typy danych kolumn, opcje formatowania i opis: