Po zainstalowaniu procedury, jeśli zostanie ona wykonana, domyślnie zwraca ona tylko uruchomione procesy użytkownika i dostarcza następujące informacje dla każdego procesu:
Kolumna | Opis | Wyświetlane przez sp_who | Pokazane przez sp_who2 |
dd gg:mm:ss.mss | Pokazuje czas trwania polecenia. Możemy użyć tej kolumny do identyfikacji długotrwałych transakcji | Nie | Nie |
session_id | Identyfikator sesji procesu | tak | tak |
sql_text | Aktualnie uruchomione polecenie SQL | Nie | Nie |
login_name | Nazwa logowania powiązana z procesem | tak | tak |
wait_info | Informacje o oczekiwaniu na proces (zagregowane) na identyfikatorze SPID, taki jak CXPACKET, ASYNC_NETWORK_IO wraz z czasem oczekiwania | Nie | tak |
CPU | całkowity czas procesora zużywany przez zapytanie | Nie | tak |
tempdb_allocations | Liczba wykonanych zapisów Tempdb – Jeśli zapytanie korzysta z bazy danych TempDB, otrzymujemy informacje o alokacjach tempdb przy użyciu tej kolumny. Na przykład, jeśli użyjemy zmiennej tabelarycznej lub tabeli tymczasowej, zostanie ona utworzona w TempDB i możemy śledzić informacje za pomocą tych kolumn | Nie | Nie |
tempdb_current | Liczba aktualnie przydzielonych stron Tempdb – Jeśli zapytanie korzysta z bazy danych TempDB, otrzymujemy informacje o alokacjach tempdb przy użyciu tej kolumny. Na przykład, jeśli użyjemy zmiennej tabelarycznej lub tabeli tymczasowej, zostanie ona utworzona w TempDB i możemy śledzić informacje za pomocą tych kolumn | Nie | Nie |
blocking_session_id | Identyfikator sesji blokującej | tak | tak |
reads | liczba wykonanych odczytów | Nie | Dysk we/wy |
writes | liczba wykonanych zapisów | Nie | Dysk we/wy |
physical reads | liczba wykonanych fizycznych odczytów | Nie | Dysk we/wy |
used_memory | ilość używanej pamięci | Nie | Nie |
status | Stan procesu | tak | tak |
open_tran_count | liczba wykorzystanych transakcji | Nie | Nie |
percent_complete | Możemy sprawdzić procentowy stan wykonania kilku poleceń za pomocą DMV sys.dm_exec_requests, takich jak polecenia tworzenia kopii zapasowych i przywracania bazy danych. Sp_WhoIsActive wykorzystuje te informacje DMV i wyświetla je jako dane wyjściowe | Nie | Nie |
host_name | Nazwa komputera hosta | tak | tak |
database_name | Nazwa bazy danych, w której wykonywane jest zapytanie | tak | tak |
program_name | Podaje nazwę aplikacji, z której łączy się użytkownik, np. Microsoft SQL Server Management Studio – Query, Azure Data Studio, SQL Server Agent | Nie | tak |
start_time | Czas rozpoczęcia procesu | Nie | tak |
login_time | Czas logowania | Nie | Nie |
request_idID | Identyfikator żądania | tak | tak |
collection_time | Czas wykonania ostatniego uruchomienia procedury sp_whoisactive | Nie | Nie |
Kilka opcjonalnych parametrów i ich wykorzystanie.
@find_block_leaders:
Można ustawić wartość argumentu @find_block_leaders na 1 i posortować wyniki dla kolumny block_session_count, aby sprawdzić blokery potencjalnych klientów i zablokowane sesje.
EXEC sp_WhoIsActive
@find_block_leaders = 1,
@sort_order = '[blocked_session_count] DESC'
W danych wyjściowych widać, że identyfikator sesji 58 jest głównym blokerem i zablokował 2 sesje wymienione poniżej w tabeli wyjściowej.
@get_plans
Załóżmy, że badany jest problem z wydajnością w MS QL Server i zostało zidentyfikowane problematyczne zapytanie. Dobrze jest , jeśli można uzyskać plan jego wykonania, aby spojrzeć na kosztowne operatory.
Można podać argument @get_plans=1, który zawiera dodatkową kolumnę w danych wyjściowych z planem wykonania XML.
EXEC sp_WhoIsActive @get_plans = 1;
@get_locks
Można użyć tego argumentu, aby uzyskać fragment XML, zawierający szczegółowe informacje o blokadach utrzymywanych w sesji SQL Server. Na wyjściu otrzymuje się dodatkowe kolumny.
@get_additional_info
Można ustawić kilka parametrów sesji, które również mogą wpłynąć na wydajność zapytania. Sp_WhoIsActive podaje argument @get_additional_info i pokazuje informacje o tych parametrach.
EXEC sp_WhoIsActive
@get_additional_info = 1
@show_system_spids
Można ustawić wartość na 1 , aby przechwytywać informacje o procesach w tle i systemie. Na ogół nie jest to zbyt interesujące, z wyjątkiem obserwowania aktywności wykonywanej przez usługi Service Broker.
@show_own_spid
Można ustawić wartość na 1 , aby przechwycić informacje o sesji, z której aktualnie się korzysta.
Pięć typów filtrów na wybrane kolumny:
@filter_type
- “session” filtr na kolumnie [session_id]
- “program” filtr na kolumnie [program_name]
- “database” filtr na kolumnie [database_name]
- “login” filtr na kolumnie [login_name]
- “host” filtr na kolumnie [host_name]
@filter
Wartość filtrowana
Np.
EXEC sp_WhoIsActive
@filter_type = 'host',
@filter = 'APP%';
EXEC sp_WhoIsActive
@filter_type = 'login',
@filter = '%dar%';
Pięć typów filtrów wykluczeńna wybrane kolumny:
@not_filter_type
- “session” filtr na kolumnie [session_id]
- “program” filtr na kolumnie [program_name]
- “database” filtr na kolumnie [database_name]
- “login” filtr na kolumnie [login_name]
- “host” filtr na kolumnie [host_name]
@not_filter
Wartość filtrowana
Np.
EXEC sp_WhoIsActive
@not_filter_type = 'host',
@not_filter = 'APP%';
EXEC sp_WhoIsActive
@not_filter_type = 'login',
@not_filter = '%dar%';
Parametry te można łączyć:
EXEC sp_WhoIsActive
@filter_type = 'host',
@filter = 'APP%'
@not_filter_type = 'login',
@not_filter = '%dar%';