sp_who (języka Transact-SQL)
Zawiera informacje o bieżących użytkowników, sesji i procesów w wystąpienie Microsoft Aparat baz danych programu SQL Server.Informacje mogą być filtrowane zwraca tylko procesy, które nie są bezczynne, które należą do określonego użytkownika lub należących do określonej sesja.
Składnia
sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]
Argumenty
[ @ loginame = ] 'login" | session ID | "Aktywny"
Jest używane do filtrowania, zestaw wyników.loginjest sysname , które identyfikują procesy należące do określonej logowania.
session ID(SPID w SQL Server 2000 i wcześniejszych) jest numer identyfikacyjny sesja należących do SQL Server wystąpienie.session IDis smallint.
ACTIVE nie obejmuje sesje, które oczekują dla następnego polecenia od użytkownika.
Jeśli wartość nie zostanie podana, procedura zgłasza wszystkie sesje należących do wystąpienie.
Wartości kodów powrotnych
0 (sukces) lub 1 (błąd)
Zestawy wyników
sp_who zwraca zestaw wyników następujące informacje.
Column |
Typ danych |
Opis |
---|---|---|
Identyfikator SPID |
smallint |
Identyfikator sesji. |
ecid |
smallint |
Identyfikator kontekstu wykonanie danego wątek skojarzone z identyfikatorem określonej sesja . ECID = {0, 1, 2, 3...n}, gdzie 0 zawsze reprezentuje głównym lub nadrzędnym wąteki {1, 2, 3...n} reprezentuje subthreads. |
Stan |
nchar(30) |
Stan procesu.Możliwe wartości to: nieaktywnych.SQL ServerResetuje sesja. Uruchamianie.sesja jest uruchomiony jeden lub więcej partii.Wiele zestawów wyników Active (MARS) jest włączony, można uruchamiać wiele instancji w sesja .Aby uzyskać więcej informacji, zobacz Za pomocą wielu aktywnych wynik ustawia (MARS). tło.sesja jest uruchomione zadania w tle, takie jak wykrywanie zakleszczenie . Wycofywanie.sesja ma cofnięcie transakcji w procesie. Oczekiwanie na.sesja oczekuje na wątek roboczego stanie się dostępne. możliwe do uruchomienia.Zadanie sesjajest możliwe do uruchomienia kolejki harmonogramu podczas oczekiwania czas kwant. spinloop.sesjazadanie oczekuje na spinlock zwolnienie. zawieszone.sesja oczekuje na zdarzenie, takie jak We/Wy, aby zakończyć. |
loginame |
nchar(128) |
Nazwa logowania skojarzone z danym procesie. |
Nazwa hosta |
nchar(128) |
Nazwa hosta lub komputera dla każdego procesu. |
blk |
char(5) |
Identyfikator sesji procesu blokowania, jeśli taka istnieje.W przeciwnym razie w tej kolumna wynosi zero. Po zablokowaniu transakcji skojarzony z Identyfikatorem sesja określonej przez osierocone transakcja rozproszonaw tej kolumna zwróci "-2" Blokowanie transakcji oddzielona. |
dbname |
nchar(128) |
Bazy danych używanej przez proces. |
cmd |
nchar(16) |
Aparat baz danychpolecenia (Transact-SQL instrukcja, wewnętrznego Aparat baz danych proces i tak dalej) wykonywania procesu. |
request_id |
int |
Identyfikator żądania w określonej sesja. |
W przypadek przetwarzanie równoległesubthreads są tworzone dla identyfikatora określonej sesja .Główny wątek jest wskazany jako spid = <xxx> i ecid =0.Inne subthreads mają taki sam spid = <xxx>, ale z ecid > 0.
Uwagi
Blokowanie proces, który może mieć blokada na wyłączność, jest gospodarstwo zasobów, które wymaga innego procesu.
W SQL Server 2000 i później, oddzielonych wszystkie transakcje rozproszone są przypisane wartości Identyfikatora sesja "-2".Oddzielony transakcje rozproszone są transakcje rozproszone, które nie są skojarzone z dowolnym identyfikator sesja .Aby uzyskać więcej informacji, zobacz Używając zaznaczonych transakcji (modelu odzyskiwania pełny).
SQL Server 2000i nowszych wartości Identyfikatora sesja rezerw od 1 do 50 do użytku wewnętrznego i wartości Identyfikatora sesja 51 lub wyższej reprezentują sesji użytkownika.
Uprawnienia
Wymaga uprawnień stan WIDOKU serwera na serwerze w celu wyświetlenia wszystkich nakaz sesje na wystąpienie 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 bez parametrów raportu wszystkich bieżących użytkowników.
USE master;
GO
EXEC sp_who;
GO
B.Określony użytkownik procesu wystawiania
Poniższy przykład pokazuje sposób wyświetlania informacji o pojedynczym bieżącego użytkownika przez nazwę 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