Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Biedt informatie over huidige gebruikers, sessies en processen in een instantie van de SQL Server Database Engine. De informatie kan worden gefilterd om alleen die processen terug te geven die niet inactief zijn, die toebehoren tot een specifieke gebruiker of die tot een specifieke sessie behoren.
Transact-SQL syntaxis-conventies
Syntax
sys.sp_who [ [ @loginame = ] { 'login' | *session_id* | 'ACTIVE' } ]
[ ; ]
Arguments
[ @loginame = ] { 'login' | session_id | 'ACTIEF' }
Gebruikt om de resultaatset te filteren.
Login is een sysnaam die processen identificeert die bij een bepaalde login horen.
session_id is een sessie-identificatienummer dat behoort tot de SQL Server instantie. session_id is klein.
ACTIVEsluit sessies uit die wachten op het volgende commando van de gebruiker.
Als er geen waarde wordt vermeld, rapporteert de procedure alle sessies die bij de instantie horen.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Resultaatset
sp_who geeft een resultaatset met de volgende informatie terug.
| Rubriek | Gegevenstype | Description |
|---|---|---|
spid |
smallint | Sessie-id. |
ecid |
smallint | Uitvoeringscontext-ID van een bepaalde thread gekoppeld aan een specifieke sessie-ID. ECID = { 0, 1, 2, 3, ... n }, waarbij 0 altijd de hoofd- of ouderthread vertegenwoordigt, en { 1, 2, 3, ... n } vertegenwoordigen de subthreads. |
status |
nchar(30) | Processtatus. Mogelijke waarden zijn: - dormant. SQL Server reset de sessie.- running. De sessie draait één of meer batches. Wanneer Multiple Active Result Sets (MARS) is ingeschakeld, kan een sessie meerdere batches uitvoeren. Raadpleeg Gebruik maken van meerdere actieve resultaatsets (MARS)voor meer informatie.- background. De sessie voert een achtergrondtaak uit, zoals deadlockdetectie.- rollback. De sessie heeft een transactie-rollback in uitvoering.- pending. De sessie wacht op een worker-thread die beschikbaar komt.- runnable. De taak van de sessie bevindt zich in de uitvoerbare wachtrij van een planner terwijl wacht op het ophalen van een tijdquantum.- spinloop. De taak van de sessie is wachten tot een spinlock vrijkomt.- suspended. De sessie wacht op een gebeurtenis, zoals I/O, om te voltooien. |
loginame |
nchar(128) | Inlognaam gekoppeld aan het betreffende proces. |
hostname |
nchar(128) | Host of computernaam voor elk proces. |
blk |
char(5) | Sessie-ID voor het blokkeringsproces, als die er is. Anders is 0deze kolom .Wanneer een transactie gekoppeld aan een gespecificeerde sessie-ID wordt geblokkeerd door een verweesde gedistribueerde transactie, geeft deze kolom een -2 terug voor de blokkerende weestransactie. |
dbname |
nchar(128) | Database die door het proces wordt gebruikt. |
cmd |
NCar(16) | Database Engine commando (Transact-SQL statement, interne Database Engine proces, enzovoort) die voor het proces wordt uitgevoerd. In SQL Server 2019 (15.x) en latere versies is het datatype nchar(26). |
request_id |
int | ID voor verzoeken die in een specifieke sessie draaien. |
Bij parallelle verwerking worden subthreads aangemaakt voor de specifieke sessie-ID. De hoofddraad wordt aangegeven als spid = <xxx> en ecid = 0. De andere subthreads hebben hetzelfde spid = <xxx>, maar dan met ecid > 0.
Remarks
Een blokkeringsproces, dat mogelijk een exclusieve lock heeft, is een proces dat middelen vasthoudt die een ander proces nodig heeft.
Alle verweesde gedistribueerde transacties krijgen de sessie-ID-waarde van -2toegewezen. Verweesde gedistribueerde transacties zijn gedistribueerde transacties die niet gekoppeld zijn aan een sessie-ID. Voor meer informatie, zie Gebruik Gemarkeerde Transacties om Gerelateerde databases Consistent te Herstellen.
Vraag de is_user_process kolom van sys.dm_exec_sessions op om systeemprocessen te scheiden van gebruikersprocessen.
Permissions
Vereist VIEW SERVER STATE-toestemming op de server om alle uitvoerende sessies op de instantie van SQL Server te zien. Anders ziet de gebruiker alleen de huidige sessie.
Examples
A. Vermeld alle huidige processen
Het volgende voorbeeld gebruikt sp_who zonder parameters om alle huidige gebruikers te rapporteren.
USE master;
GO
EXECUTE sp_who;
GO
B. Geef een specifieke gebruikersprocedure op
Het volgende voorbeeld laat zien hoe je informatie over een enkele huidige gebruiker kunt bekijken op basis van inlognaam.
USE master;
GO
EXECUTE sp_who 'janetl';
GO
C. Alle actieve processen weergeven
USE master;
GO
EXECUTE sp_who 'active';
GO
D. Toon een specifiek proces dat wordt geïdentificeerd door een sessie-ID
USE master;
GO
EXECUTE sp_who '10'; --specifies the process_id;
GO