Sdílet prostřednictvím


Lock:Escalation – třída události

Platí na: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Třída událostí Lock:Escalation označuje, že jemnější zámek byl převeden na hrubozrnný; například zámek řádku, který je převeden na objektový zámek. Třída eskalační události je Event ID 60.

Lock:Escalation Event Class Data Columns

Název datového sloupce Datový typ Description ID sloupce Filtrovatelný
Název aplikace nvarchar Název klientské aplikace, která vytvořila připojení k instanci SQL Serveru. Tento sloupec se naplní hodnotami předanými aplikací místo zobrazovaného názvu programu. 10 Ano
ClientProcessID int ID přiřazené hostitelským počítačem procesu, ve kterém je klientská aplikace spuštěná. Tento datový sloupec se vyplní, pokud klient poskytne ID klientského procesu. 9 Ano
DatabaseID int Identifikace databáze, ve které byl zámek získán. SQL Server Profiler zobrazuje název databáze, pokud je sloupec dat ServerName zachycen v trace a server je dostupný. Pomocí funkce DB_ID určete hodnotu databáze. 3 Ano
DatabaseName nvarchar Název databáze, ve které došlo k eskalaci. 35 Ano
EventClass int Typ události = 60. 27 Ne
EventSubClass int Příčina eskalace zámku:

0 - LOCK_THRESHOLD znamená, že příkaz překročil práh zámku.

1 - MEMORY_THRESHOLD označuje, že příkaz překročil práh paměti.
21 Ano
EventSequence int Posloupnost dané události v rámci požadavku 51 Ne
GroupID int ID skupiny úloh, ve které se aktivuje událost trasování SQL. 66 Ano
Název hostitele nvarchar Název počítače, na kterém je klient spuštěný. Tento datový sloupec se vyplní, pokud klient zadá hostitelské jméno. Pro určení názvu hostitele použijte funkci HOST_NAME. 8 Ano
IntegerData int HoBT lock count. Počet zámků pro HoBT v době eskalace zámků. 25 Ano
IntegerData2 int Počet zámků se zvýšil. Celkový počet zdymadel, které byly přestavěny. Tyto zdymadla jsou vyřazena, protože jsou již pokryty eskalovaným zámkem. 55 Ano
IsSystem int Určuje, jestli došlo k události v systémovém procesu nebo uživatelském procesu. 1 = systém, 0 = uživatel. 60 Ano
Linenumber int Číslo řádku Transact-SQL tvrzení. 5 Ano
Přihlásit se nvarchar Název uživatelského přihlášení (buď bezpečnostní přihlášení SQL Serveru, nebo přihlašovací údaje Microsoft Windows ve formě DOMÉNA\uživatelské jméno). 11 Ano
LoginSid image Identifikační číslo zabezpečení (SID) přihlášeného uživatele. Tyto informace najdete v sys.server_principals katalogovém zobrazení. Každý identifikátor SID je jedinečný pro každé přihlášení na serveru. 41 Ano
Mode int Výsledný režim zámku po eskalaci:

0=NULL - Kompatibilní se všemi ostatními režimy zámku (LCK_M_NL)

1=Stabilitní zámek schématu (LCK_M_SCH_S)

2=Zámek modifikace schématu (LCK_M_SCH_M)

3=Sdílený zámek (LCK_M_S)

4=Aktualizovat zámek (LCK_M_U)

5=Exkluzivní zámek (LCK_M_X)

6=Záměr sdílený zámek (LCK_M_IS)

7=Zámek aktualizace záměru (LCK_M_IU)

8=Zámek výhradně záměrem (LCK_M_IX)

9=Sdíleno s úmyslem aktualizovat (LCK_M_SIU)

10=Exkluzivně sdíleno s úmyslem (LCK_M_SIX)

11=Aktualizace s exkluzivním záměrem (LCK_M_UIX)

12=Hromadný aktualizační zámek (LCK_M_BU)

13=Sdílený/sdílený rozsah klíčů (LCK_M_RS_S)

14=Sdílení rozsahu klíčů/aktualizace (LCK_M_RS_U)

15=Vložení rozsahu klíčů NULL (LCK_M_RI_NL)

16=Sdílené vložení rozsahu klíčů (LCK_M_RI_S)

17=Aktualizace vložení rozsahu klíčů (LCK_M_RI_U)

18=Insert Range Exclusive (LCK_M_RI_X)

19=Sdílené klíčové rozsahy (LCK_M_RX_S)

20=Exkluzivní aktualizace klíčového rozsahu (LCK_M_RX_U)

21=Exkluzivní pro klíčovou řadu exkluzivně (LCK_M_RX_X)
32 Ano
NTDomainName nvarchar Doména Systému Windows, do které uživatel patří. 7 Ano
NTUserName nvarchar Uživatelské jméno systému Windows. 6 Ano
ObjectID int Systémově přiřazené ID tabulky, pro kterou byla eskalace zámku spuštěna. 22 Ano
ObjectID2 bigint ID souvisejícího objektu nebo entity. (HoBT ID, pro které byla eskalace zámku spuštěna.) 56 Ano
Ofset int Začínáme offset Transact-SQL výroku. 61 Ano
OwnerID int 1=TRANSAKCE

2=KURZOR

3=SEZENÍ

4=SHARED_TRANSACTION_WORKSPACE

5=EXCLUSIVE_TRANSACTION_WORKSPACE

6=WAITFOR_QUERY
58 Ano
RequestID int ID požadavku obsahujícího příkaz. 49 Ano
název serveru nvarchar Název instance systému SQL Server, která se trasuje. 26 Ne
SessionLoginName nvarchar Přihlašovací jméno uživatele, který relaci pochází. Například pokud se připojíte ke SQL Serveru pomocí Login1 a vykonáte příkaz jako Login2, SessionLoginName ukáže Login1 a LoginName Login2. Tento sloupec zobrazuje přihlášení k SQL Serveru i Windows. 64 Ano
SPID int ID relace, na které došlo k události. 12 Ano
Počáteční čas datetime Čas, kdy událost začala, pokud je k dispozici. 14 Ano
TextData ntext Text Transact-SQL prohlášení, které způsobilo eskalaci zámku. 1 Ano
TransactionID bigint ID transakce přiřazené systémem. 4 Ano
Type int Granularita eskalace zámku:

1=NULL_RESOURCE

2=DATABÁZE

3=SOUBOR

5=OBJEKT (úroveň tabulky)

6=PAGE

7=KLÍČ

8=ROZSAH

9=RID

10=APLIKACE

11=METADATA

12=HOBT

13=ALLOCATION_UNIT
57 Ano

Examples

Následující příklad používá sp_trace_create postup pro vytvoření stopy, přidává sp_trace_setevent sloupce eskalace zámku do stopy a poté používá k sp_trace_setstatus zahájení stopy. Ve výrocích jako EXEC sp_trace_setevent @TraceID, 60, 22, 1, číslo 60 označuje třídu escalační události, 22 označuje sloupec ObjectID a nastavuje 1 stopovací událost na ON.

DECLARE @RC int, @TraceID int;  
EXEC @rc = sp_trace_create @TraceID output, 0, N'C:\TraceResults';  
-- Set the events and data columns you need to capture.  
EXEC sp_trace_setevent @TraceID, 60,  1, 1; --  1 = TextData  
EXEC sp_trace_setevent @TraceID, 60, 12, 1; -- 12 = SPID  
EXEC sp_trace_setevent @TraceID, 60, 21, 1; -- 21 = EventSubClass  
EXEC sp_trace_setevent @TraceID, 60, 22, 1; -- 22 = ObjectID  
EXEC sp_trace_setevent @TraceID, 60, 25, 1; -- 25 = IntegerData  
EXEC sp_trace_setevent @TraceID, 60, 55, 1; -- 25 = IntegerData2  
EXEC sp_trace_setevent @TraceID, 60, 57, 1; -- 57 = Type  
-- Set any filter  by using sp_trace_setfilter.  
-- Start the trace.  
EXEC sp_trace_setstatus @TraceID, 1;  
GO  

Teď, když je stopa spuštěná, proveďte příkazy, které chcete sledovat. Když skončí, spusťte následující kód pro zastavení a následné uzavření stopy. Tento příklad používá fn_trace_getinfo funkci k získání traceid , které je použito ve výrocích sp_trace_setstatus .

-- After the trace is complete.  
DECLARE @TraceID int;  
-- Find the traceid of the current trace.  
SELECT @TraceID = traceid   
FROM ::fn_trace_getinfo(default)   
WHERE value = N'C:\TraceResults.trc';  
  
-- First stop the trace.   
EXEC sp_trace_setstatus @TraceID, 0;  
  
-- Close and then delete its definition from SQL Server.   
EXEC sp_trace_setstatus @TraceID, 2;  
GO  

Viz také

sp_trace_setevent (Transact-SQL)
sys.dm_tran_locks (Transact-SQL)