sp_who (Transact-SQL)
Provides information about current users, sessions, and processes in an instance of the Microsoft SQL Server Database Engine.Informacje mogą być filtrowane do zwracania tylko procesy, które nie są bezczynne, które należą do określonego użytkownika lub które należą do określonej sesja.
sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]
Argumenty
[ @loginame = ] 'login' | session ID | 'ACTIVE'
Jest używane do filtrowania zestaw wyników.login jest sysname procesy należące do danego identyfikatora logowania, które identyfikują.
session ID (SPID in SQL Server 2000 and earlier) is a session identification number belonging to the SQL Server instance.session ID is smallint.
AKTYWNE wyłącza sesje, które oczekują na następne polecenie od użytkownika.
Jeśli wartość nie zostanie podana, procedura raportuje wszystkie sesje należącej do wystąpienie.
Wartości kodów powrotnych
0 (sukces) lub 1 (brak)
Zestawy wyników
sp_who zwraca zestaw z następującymi informacjami wyników.
Kolumna |
Typ danych |
Description |
---|---|---|
SPID |
smallint |
Identyfikator sesja. |
ecid |
smallint |
Identyfikator ID kontekstu wykonanie danej wątek skojarzone z identyfikatorem określonej sesja. ECID = {0, 1, 2, 3,... n}, gdzie 0 oznacza zawsze głównym lub wątek nadrzędnej i {1, 2, 3,...n} reprezentuje subthreads. |
Stan |
nchar(30) |
Stan procesu.Możliwe wartości to: dormant.SQL Server is resetting the session. Uruchamianie.Sesja jest uruchomiony jeden lub więcej instancji.Po włączeniu wiele zestawów wyników Active (MARS) sesja można uruchamiać wiele instancji.Aby uzyskać więcej informacji zobaczZa pomocą wielu wyników Active ustawia (MARS). tło.Sesja jest uruchomione zadania w tle, takich jak wykrywanie zakleszczenie. Wycofywanie.Sesja ma cofnięcie transakcji w procesie. Oczekujące.Sesja oczekuje na wątek roboczego stanie się dostępne. runnable.Zadanie do sesja jest w kolejce runnable harmonogramu podczas oczekiwania na uzyskanie kwant czas. spinloop.Zadania w sesja czeka, aż spinlock stać się wolne. zawieszone.Sesja oczekuje na zdarzenie, takie jak We/Wy, aby zakończyć. |
loginame |
nchar(128) |
Nazwa logowania skojarzone z określonego procesu. |
Nazwa hosta |
nchar(128) |
Nazwa hosta lub komputera w każdym procesie. |
blk |
char(5) |
Identyfikator sesja procesu blokowania, jeśli taki istnieje.W przeciwnym razie to kolumna wynosi zero. Podczas transakcji skojarzone z IDENTYFIKATOREM określonej sesja jest blokowany przez transakcję rozproszonych oddzielone, w tej kolumnie będzie zwracać "2" blokowania oddzielonych transakcji. |
dbname |
nchar(128) |
Bazy danych używanej przez proces. |
cmd |
nchar(16) |
Database Engine polecenia)Transact-SQL instrukcja wewnętrzne Database Engine przetwarzanie i tak dalej) wykonywania procesu. |
request_id |
int |
Identyfikator żądania w określonej sesja. |
przypadek braku równoległego przetwarzania subthreads są tworzone dla identyfikatora określonej sesja.Główny wątek jest wskazywana jako spid = <xxx> i ecid =0. The other subthreads have the same spid = <xxx>, but with ecid > 0.
Remarks
Blokowanie procesu, który może mieć wyłącznej blokada, to takie, które posiada zasobów, które wymaga innego procesu.
W SQL Server 2000 a później, wszystkie transakcje rozproszone oddzielone są przypisane wartości IDENTYFIKATORA sesja od-"2". Transakcje rozproszone oddzielone są transakcje rozproszone, które nie są skojarzone z dowolnym identyfikatorem sesja.Aby uzyskać więcej informacji zobaczUsing Marked Transactions (Full Recovery Model).
SQL Server 2000 i nowszych rezerw sesja ID wartości od 1 do 50 do użytku wewnętrznego i wartości identyfikatorów sesja 51 lub wyższej reprezentują sesja użytkownika.
Uprawnienia
Wymaga uprawnienia VIEW SERVER STATE na serwerze w celu wyświetlenia wszystkich wykonującego sesje na wystąpienie z SQL Server. W przeciwnym razie użytkownik widzi tylko w bieżącej sesja.
Przykłady
A.Wyświetlanie listy wszystkich bieżących procesów
W poniższym przykładzie użyto sp_who nie określono parametrów, aby zgłosić wszystkich bieżących użytkowników.
USE master;
GO
EXEC sp_who;
GO
B.Wyświetlanie listy procesów określony użytkownik
W poniższym przykładzie pokazano, jak do wyświetlania informacji o jeden bieżącego użytkownika o nazwie logowania.
USE master;
GO
EXEC sp_who 'janetl';
GO
C.Wyświetlanie wszystkich aktywnych procesów
USE master;
GO
EXEC sp_who 'active';
GO
D.Wyświetlanie określonego procesu, identyfikowane przez identyfikator sesja
USE master;
GO
EXEC sp_who '10' --specifies the process_id;
GO