Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Poskytuje informace o současných uživatelích, relacích a procesech v instanci Databázový stroj systému SQL Server. Informace lze filtrovat tak, aby vracely pouze ty procesy, které nejsou nečinné, patří konkrétnímu uživateli nebo patří konkrétní relaci.
Syntax
sys.sp_who [ [ @loginame = ] { 'login' | *session_id* | 'ACTIVE' } ]
[ ; ]
Arguments
[ @loginame = ] { 'login' | session_id | 'AKTIVNÍ' }
Používá se k filtrování výsledné množiny.
Přihlášení je sysname , které identifikuje procesy patřící konkrétnímu přihlašovacímu číslu.
session_id je identifikační číslo relace patřící SQL Server instanci. session_id je malý.
ACTIVEVylučuje relace, které čekají na další příkaz od uživatele.
Pokud není uvedena žádná hodnota, procedura hlásí všechny relace patřící dané instanci.
Hodnoty návratového kódu
0 (úspěch) nebo 1 (selhání).
Sada výsledků
sp_who vrací množinu výsledků s následujícími informacemi.
| Column | Datový typ | Description |
|---|---|---|
spid |
smallint | ID relace. |
ecid |
smallint | ID kontextu provádění daného vlákna spojeného s konkrétním ID relace. ECID = { 0, 1, 2, 3, ... n }, kde 0 vždy představuje hlavní nebo rodičovské vlákno, a { 1, 2, 3, ... n } představují podvlákna. |
status |
nchar(30) | Stav procesu. Možné hodnoty: - dormant. SQL Server resetuje relaci.- running. Sekce probíhá v jedné nebo více dávkách. Když je povoleno více aktivních sad výsledků (MARS), může relace spouštět více dávek. Další informace naleznete v tématu Použití více aktivních sad výsledků (MARS).- background. Relace spouští úkol na pozadí, například detekci zablokování.- rollback. V relaci probíhá návrat transakce.- pending. Relace čeká, až se otevře pracovní vlákno.- runnable. Úkol relace je v běžné frontě plánovače, zatímco se čeká na získání časového kvanta.- spinloop. Úkolem této seance je čekat, až se spinlock uvolní.- suspended. Relace čeká na dokončení události, například I/O. |
loginame |
nchar(128) | Přihlašovací jméno spojené s konkrétním procesem. |
hostname |
nchar(128) | Hostitelský nebo počítačový název pro každý proces. |
blk |
char(5) | Session ID pro proces blokování, pokud existuje. Jinak je tento sloupec .0Když je transakce spojená s určeným ID relace zablokována osiřelou distribuovanou transakcí, tento sloupec vrátí a -2 pro blokující osiřelou transakci. |
dbname |
nchar(128) | Databáze používaná procesem. |
cmd |
nchar(16) | Database Engine příkaz (Transact-SQL příkaz, interní Database Engine proces a podobně) vykonává pro daný proces. V SQL Server 2019 (15.x) a novějších verzích je datový typ nchar(26). |
request_id |
int | ID pro požadavky běžící v konkrétní relaci. |
Při paralelním zpracování se vytvářejí podvlákna pro konkrétní ID relace. Hlavní vlákno je označeno jako spid = <xxx> a ecid = 0. Ostatní podvlákna mají stejný spid = <xxx>, ale s .ecid > 0
Remarks
Blokovací proces, který může mít exkluzivní zámek, je takový, který drží zdroje, které jiný proces potřebuje.
Všem osiřelým distribuovaným transakcím je přiřazena hodnota ID relace .-2 Osiřelé distribuované transakce jsou distribuované transakce, které nejsou spojeny s žádným ID relace. Pro více informací viz Používání označených transakcí k obnově souvisejících databází konzistentně.
Dotazujte sloupec is_user_process , sys.dm_exec_sessions abyste oddělili systémové procesy od uživatelských procesů.
Permissions
Vyžaduje VIEW oprávnění SERVER STATE na serveru pro zobrazení všech vykonávaných relací na instanci SQL Server. Jinak uživatel vidí pouze aktuální relaci.
Examples
A. Seznam všech aktuálních procesů
Následující příklad používá sp_who bez parametrů k hlášení všech aktuálních uživatelů.
USE master;
GO
EXECUTE sp_who;
GO
B. Uveďte konkrétní proces uživatele
Následující příklad ukazuje, jak zobrazit informace o jednom aktuálním uživateli podle přihlašovacího jména.
USE master;
GO
EXECUTE sp_who 'janetl';
GO
C. Zobrazit všechny aktivní procesy
USE master;
GO
EXECUTE sp_who 'active';
GO
D. Zobrazit konkrétní proces identifikovaný ID relace
USE master;
GO
EXECUTE sp_who '10'; --specifies the process_id;
GO
Související obsah
- sys.sp_lock (Transact-SQL)
- sys.sysprocesses (Transact-SQL)
- uložené procedury systému (Transact-SQL)