Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Tillhandahåller information om nuvarande användare, sessioner och processer i en instans av Databasmotor för SQL Server. Informationen kan filtreras för att endast returnera de processer som inte är inaktiva, som tillhör en specifik användare eller som tillhör en specifik session.
Transact-SQL syntaxkonventioner
Syntax
sys.sp_who [ [ @loginame = ] { 'login' | *session_id* | 'ACTIVE' } ]
[ ; ]
Arguments
[ @loginame = ] { 'login' | session_id | 'AKTIV' }
Används för att filtrera resultatuppsättningen.
Inloggning är ett sysnamn som identifierar processer som tillhör en viss inloggning.
session_id är ett sessionsidentifieringsnummer som tillhör den SQL Server instansen. session_id är liten.
ACTIVEexkluderar sessioner som väntar på nästa kommando från användaren.
Om inget värde anges rapporterar proceduren alla sessioner som tillhör instansen.
Returnera kodvärden
0 (lyckades) eller 1 (fel).
Resultatuppsättning
sp_who returnerar en resultatuppsättning med följande information.
| Column | Datatyp | Description |
|---|---|---|
spid |
smallint | Sessions-ID. |
ecid |
smallint | Exekveringskontext-ID för en given tråd kopplat till ett specifikt sessions-ID. ECID = { 0, 1, 2, 3, ... n }, där 0 alltid representerar huvud- eller föräldratråden, och { 1, 2, 3, ... n } representerar deltrådarna. |
status |
NCar(30) | Processstatus. Möjliga värden är: - dormant. SQL Server återställer sessionen.- running. Sessionen kör en eller flera batcher. När Multiple Active Result Sets (MARS) är aktiverat kan en session köra flera batcher. Mer information finns i Använda flera aktiva resultatuppsättningar (MARS).- background. Sessionen kör en bakgrundsuppgift, såsom deadlock-detektering.- rollback. Sessionen har en transaktionsrullning under arbete.- pending. Sessionen väntar på att en arbetstråd ska bli tillgänglig.- runnable. Sessionens uppgift ligger i den körbara kön hos en schemaläggare medan man väntar på att få en tidskvant.- spinloop. Sessionens uppgift är att vänta på att en spinlock ska bli fri.- suspended. Sessionen väntar på att en händelse, såsom I/O, ska avslutas. |
loginame |
nchar(128) | Inloggningsnamn kopplat till den specifika processen. |
hostname |
nchar(128) | Värd- eller datornamn för varje process. |
blk |
char(5) | Sessions-ID för blockeringsprocessen, om det finns ett sådant. Annars är denna kolumn .0När en transaktion kopplad till ett specificerat sessions-ID blockeras av en föräldralös distribuerad transaktion, returnerar denna kolumn a -2 för den blockerande föräldralösa transaktionen. |
dbname |
nchar(128) | Databas som används av processen. |
cmd |
NCar(16) | Database Engine kommando (Transact-SQL-sats, intern Database Engine process och så vidare) som körs för processen. I SQL Server 2019 (15.x) och senare versioner är datatypen nchar(26). |
request_id |
int | ID för förfrågningar som körs i en specifik session. |
Vid parallell bearbetning skapas undertrådar för det specifika sessions-ID:t. Huvudtråden anges som spid = <xxx> och ecid = 0. De andra undertrådarna har samma spid = <xxx>, men med ecid > 0.
Remarks
En blockeringsprocess, som kan ha ett exklusivt lås, är en som håller resurser som en annan process behöver.
Alla föräldralösa distribuerade transaktioner tilldelas sessions-ID-värdet .-2 Föräldralösa distribuerade transaktioner är distribuerade transaktioner som inte är kopplade till något sessions-ID. För mer information, se Använd markerade transaktioner för att återställa relaterade databaser konsekvent.
Fråga kolumnen is_user_process i sys.dm_exec_sessions för att separera systemprocesser från användarprocesser.
Permissions
Kräver VIEW SERVER STATE-behörighet på servern för att se alla körande sessioner på instansen av SQL Server. Annars ser användaren endast den aktuella sessionen.
Examples
A. Lista alla aktuella processer
Följande exempel använder sp_who utan parametrar för att rapportera alla nuvarande användare.
USE master;
GO
EXECUTE sp_who;
GO
B. Lista en specifik användares process
Följande exempel visar hur man kan se information om en enskild nuvarande användare via inloggningsnamn.
USE master;
GO
EXECUTE sp_who 'janetl';
GO
C. Visa alla aktiva processer
USE master;
GO
EXECUTE sp_who 'active';
GO
D. Visa en specifik process identifierad av ett sessions-ID
USE master;
GO
EXECUTE sp_who '10'; --specifies the process_id;
GO