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
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Ukončí uživatelský proces založený na ID relace nebo jednotce práce (UOW). Pokud zadané ID relace nebo UOW má mnoho práce vrátit zpět, KILL může dokončení příkazu nějakou dobu trvat. Dokončení procesu trvá déle, zejména pokud proces zahrnuje vrácení dlouhé transakce zpět.
KILL ukončí normální připojení, které interně zastaví transakce přidružené k zadanému ID relace. Někdy se může používat microsoft Distributed Transaction Coordinator (MS DTC). Pokud se používá MS DTC, můžete také použít příkaz k ukončení osamocených a pochybovaných distribuovaných transakcí.
Syntax
Syntaxe PRO SQL Server, Azure SQL Database a Azure SQL Managed Instance:
KILL { session_id [ WITH STATUSONLY ] | UOW [ WITH STATUSONLY | COMMIT | ROLLBACK ] }
[ ; ]
Syntaxe pro Azure Synapse Analytics, systém PDW (Analytics Platform System) a Microsoft Fabric:
KILL 'session_id'
[ ; ]
Arguments
session_id
ID relace procesu, který se má ukončit.
session_id je jedinečný int , který je přiřazen každému uživatelskému připojení při vytváření připojení. Hodnota ID relace je svázaná s připojením po dobu trvání připojení. Po ukončení připojení se celočíselná hodnota uvolní a dá se znovu přiřadit k novému připojení.
Následující dotaz vám může pomoct identifikovat session_id , které chcete zabít:
SELECT conn.session_id, host_name, program_name,
nt_domain, login_name, connect_time, last_request_end_time
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_exec_connections AS conn
ON sess.session_id = conn.session_id;
UOW
Identifikuje jednotku pracovního ID (UOW) distribuovaných transakcí.
UOW je identifikátor GUID, který lze získat ze request_owner_guid sloupce sys.dm_tran_locks zobrazení dynamické správy.
UOW lze také získat z protokolu chyb nebo prostřednictvím monitorování MS DTC. Další informace o monitorování distribuovaných transakcí naleznete v dokumentaci MS DTC.
Slouží KILL <UOW> k zastavení nevyřešených distribuovaných transakcí. Tyto transakce nejsou přidruženy k žádnému SKUTEČNÉMU ID relace, ale jsou přidruženy uměle s ID relace = -2. Toto ID relace usnadňuje identifikaci nevyřešených transakcí dotazováním sloupce ID relace v sys.dm_tran_lockszobrazeních sys.dm_exec_sessions, nebo sys.dm_exec_requests dynamických zobrazení správy.
Se STATUSONLY
Používá se k vygenerování zprávy o průběhu pro zadaný objekt UOW nebo session_id který se vrací zpět z důvodu předchozího KILL příkazu.
KILL WITH STATUSONLY neukončí nebo vrátí ID UOW nebo relace. Příkaz zobrazí pouze aktuální průběh vrácení zpět.
S COMMIT
Slouží k ukončení nevyřešené distribuované transakce s potvrzením. Tuto možnost můžete použít pouze u distribuovaných transakcí. Další informace naleznete v tématu distribuované transakce.
S ROLLBACKEM
Slouží k ukončení nevyřešené distribuované transakce s vrácením zpět. Tuto možnost můžete použít pouze u distribuovaných transakcí. Další informace naleznete v tématu distribuované transakce.
Remarks
KILL se běžně používá k ukončení procesu, který blokuje další důležité procesy pomocí zámků.
KILL lze také použít k zastavení procesu, který spouští dotaz, který používá nezbytné systémové prostředky. Systémové procesy a procesy, na kterých běží rozšířená uložená procedura, nelze ukončit.
Používejte KILL pečlivě, zejména v případě, že jsou spuštěny kritické procesy. Nemůžete zabít svůj vlastní proces. Neměli byste také ukončovat následující procesy:
AWAITING COMMANDCHECKPOINT SLEEPLAZY WRITERLOCK MONITORSIGNAL HANDLER
Slouží @@SPID k zobrazení hodnoty ID relace (SPID) pro aktuální relaci.
Chcete-li získat sestavu hodnot ID aktivní relace, zadejte dotaz na session_id sloupec sys.dm_tran_lockszobrazení , sys.dm_exec_sessionsa sys.dm_exec_requests dynamické správy. Můžete také zobrazit SPID sloupec, který systém uložená procedura sp_who vrací. Pokud probíhá vrácení zpět pro konkrétní ID relace, cmd sloupec v sp_who sadě výsledků pro toto ID relace označuje KILLED/ROLLBACK.
Pokud má určité připojení zámek na prostředku databáze a blokuje průběh jiného připojení, ID relace blokujícího připojení se zobrazí ve blocking_session_id sloupci sys.dm_exec_requests nebo blk sloupci vráceného uživatelem sp_who.
Příkaz KILL lze použít k vyřešení distribuovaných transakcí v pochybnostech. Tyto transakce jsou nerozpoznané distribuované transakce, ke kterým dochází kvůli neplánovaným restartováním databázového serveru nebo koordinátoru MS DTC. Další informace o transakcích bez pochybností naleznete v části "Two-Phase Potvrzení" v části Použití označených transakcí k obnovení souvisejících databází konzistentně.
Použití SE STAVEM
KILL WITH STATUSONLY generuje sestavu, pokud se ID relace nebo UOW vrátí zpět z důvodu předchozího KILL <session ID> příkazu nebo KILL <UOW> příkazu. Zpráva o průběhu uvádí množství dokončených vrácení zpět (v procentech) a odhadovanou dobu, kterou zbývá (v sekundách). Sestava ji uvádí v následujícím formátu:
Spid|UOW <xxx>: Transaction rollback in progress. Estimated rollback completion: <yy>% Estimated time left: <zz> seconds
Pokud se vrácení ID relace nebo UOW dokončí před spuštěním KILL <session ID> WITH STATUSONLY příkazu KILL <UOW> WITH STATUSONLY , KILL ... WITH STATUSONLY vrátí následující chybu:
"Msg 6120, Level 16, State 1, Line 1"
"Status report cannot be obtained. Rollback operation for Process ID <session ID> is not in progress."
K této chybě dochází také v případě, že se zpět nevrátí žádné ID relace nebo UOW.
Stejnou zprávu o stavu lze získat opakováním stejného KILL příkazu bez použití WITH STATUSONLY této možnosti. Tuto možnost ale nedoporučujeme tímto způsobem opakovat. Pokud příkaz zopakujete KILL <session_id> , může se nový proces zastavit, pokud se vrácení zpět dokončí a ID relace se před spuštěním nového KILL příkazu znovu přiřazuje novému úkolu. Zabrání zastavení nového procesu zadáním WITH STATUSONLY.
Permissions
SQL Server:ALTER ANY CONNECTION Vyžaduje oprávnění.
ALTER ANY CONNECTION je součástí členství v pevných rolích serveru sysadmin nebo processadmin .
SQL Database:KILL DATABASE CONNECTION Vyžaduje oprávnění. Přihlašovací jméno objektu KILL DATABASE CONNECTION zabezpečení na úrovni serveru má oprávnění.
Datový sklad Microsoft Fabric: Vyžaduje oprávnění k monitorování položky nebo členství v roli Správce pracovního prostoru.
Databáze SQL v Microsoft Fabric:KILL DATABASE CONNECTION Vyžaduje oprávnění v databázovém stroji SQL nebo oprávnění k zápisu položky v pracovním prostoru Prostředky infrastruktury.
Azure Synapse Analytics: Vyžaduje oprávnění správce.
Examples
A. Zastavení relace pomocí příkazu KILL
Následující příklad ukazuje, jak zastavit ID 53relace .
KILL 53;
GO
B. Získání zprávy o průběhu pomocí ID relace KILL SE STAVONLY
Následující příklad vygeneruje stav procesu vrácení zpět pro konkrétní ID relace.
KILL 54;
KILL 54 WITH STATUSONLY;
GO
Tady je soubor výsledků.
spid 54: Transaction rollback in progress. Estimated rollback completion: 80% Estimated time left: 10 seconds.
C. Zastavení osamocené distribuované transakce pomocí příkazu KILL
Následující příklad ukazuje, jak zastavit osamocený distribuovanou transakci (ID relace = -2) s UOW z D5499C66-E398-45CA-BF7E-DC9C194B48CF.
KILL 'D5499C66-E398-45CA-BF7E-DC9C194B48CF';