Låsning: Klass för eskaleringshändelse

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Lock:Escalation-händelseklassen indikerar att ett finkornigt lås har konverterats till ett grövre lås; till exempel ett radlås som omvandlas till ett objektlås. Eskaleringshändelseklassen är Event ID 60.

Lock:Eskalationshändelseklass Datakolumner

Namn på datakolumn Datatyp Description Kolumn-ID Filtrerbar
ApplicationName nvarchar Namnet på klientprogrammet som skapade anslutningen till en instans av SQL Server. Den här kolumnen fylls i med de värden som skickas av programmet i stället för programmets visade namn. 10 Yes
ClientProcessID int ID som tilldelats av värddatorn till den process där klientprogrammet körs. Denna datakolumn fylls om klienten tillhandahåller klientens process-ID. 9 Yes
DatabaseID int ID för databasen där låset förvärvades. SQL Server Profiler visar namnet på databasen om kolumnen ServerName-data fångas i spåret och servern är tillgänglig. Fastställa värdet för en databas med hjälp av funktionen DB_ID. 3 Yes
DatabaseName nvarchar Namnet på databasen där eskaleringen skedde. 35 Yes
EventClass int Typ av evenemang = 60. 27 Nej
EventSubClass int Orsak till låsupptrappningen:

0 - LOCK_THRESHOLD indikerar att uttalandet överskred låströskeln.

1 - MEMORY_THRESHOLD indikerar att uttalandet överskred minneströskeln.
21 Yes
EventSequence int Sekvens av en viss händelse i begäran. 51 Nej
GroupID int ID för arbetsbelastningsgruppen där SQL Trace-händelsen utlöses. 66 Yes
HostName nvarchar Namnet på den dator där klienten körs. Denna datakolumn fylls i om klienten anger värdnamnet. För att bestämma värdnamnet, använd funktionen HOST_NAME. 8 Yes
IntegerData int HoBT-låsräkning. Antalet lås för HoBT vid tiden för låsupptrappningen. 25 Yes
IntegerData2 int Ökat antal lås. Det totala antalet slussar som konverterades. Dessa slussstrukturer avgränsas eftersom de redan täcks av det eskalerade låset. 55 Yes
IsSystem int Anger om händelsen inträffade i en systemprocess eller en användarprocess. 1 = system, 0 = användare. 60 Yes
Radnummer int Radnummer på Transact-SQL uttalande. 5 Yes
LoginName nvarchar Namnet på användarens inloggning (antingen SQL Server-säkerhetsinloggning eller Microsoft Windows-inloggningsuppgifterna i form av DOMÄN\användarnamn). 11 Yes
LoginSid image Säkerhetsidentifieringsnummer (SID) för den inloggade användaren. Du kan hitta denna information i sys.server_principals katalogvyn. Varje SID är unikt för varje inloggning på servern. 41 Yes
Läge int Resulterande låsläge efter eskaleringen:

0=NULL - Kompatibel med alla andra låslägen (LCK_M_NL)

1=Schemastabilitetslås (LCK_M_SCH_S)

2=Schemamodifieringslås (LCK_M_SCH_M)

3=Delat lås (LCK_M_S)

4=Uppdateringslås (LCK_M_U)

5=Exklusivt lås (LCK_M_X)

6=Avsiktsdelat lås (LCK_M_IS)

7=Avsiktsuppdateringslås (LCK_M_IU)

8=Avsiktsexklusivt lås (LCK_M_IX)

9=Delad med avsikt att uppdatera (LCK_M_SIU)

10=Delad med avsikt exklusiv (LCK_M_SIX)

11=Uppdatering med avsikt exklusiv (LCK_M_UIX)

12=Bulkuppdateringslås (LCK_M_BU)

13=Nyckelintervall Delat/Delat (LCK_M_RS_S)

14=Nyckelintervall Delat/Uppdatering (LCK_M_RS_U)

15=Nyckelområde Infoga NULL (LCK_M_RI_NL)

16=Nyckelområdesinlägg delat (LCK_M_RI_S)

17=Uppdatering av nyckelomfång (LCK_M_RI_U)

18=Nyckelomfängsinsats exklusiv (LCK_M_RI_X)

19=Nyckelområde Exklusivt Delat (LCK_M_RX_S)

20=Exklusiv uppdatering av nyckelområdet (LCK_M_RX_U)

21=Exklusiv för nyckelutbudet (LCK_M_RX_X)
32 Yes
NTDomainName nvarchar Windows-domän som användaren tillhör. 7 Yes
NTUserName nvarchar Windows-användarnamn. 6 Yes
ObjectID int Systemtilldelat ID för tabellen där låseskalering utlöstes. 22 Yes
ObjectID2 bigint ID för det relaterade objektet eller entiteten. (HoBT-ID där låsupptrappningen aktiverades.) 56 Yes
Uppväga int Startoffset av Transact-SQL påstående. 61 Yes
OwnerID int 1=TRANSAKTION

2=MARKÖR

3=SESSION

4=SHARED_TRANSACTION_WORKSPACE

5=EXCLUSIVE_TRANSACTION_WORKSPACE

6=WAITFOR_QUERY
58 Yes
RequestID int ID för begäran som innehåller -instruktionen. 49 Yes
ServerName nvarchar Namn på den instans av SQL Server som spåras. 26 Nej
SessionLoginName nvarchar Inloggningsnamn för den användare som påbörjade sessionen. Till exempel, om du ansluter till SQL Server med Login1 och kör en sats som Login2, visar SessionLoginName Login1 och LoginName visar Login2 . Den här kolumnen visar både SQL Server- och Windows-inloggningar. 64 Yes
SPID int ID för sessionen där händelsen inträffade. 12 Yes
StartTime datetime Tidpunkt då händelsen startade, om den är tillgänglig. 14 Yes
TextData ntext Texten i det Transact-SQL uttalandet som orsakade låsupptrappningen. 1 Yes
TransaktionsID bigint Systemtilldelat ID för transaktionen. 4 Yes
Type int Låseskaleringsgranularitet:

1=NULL_RESOURCE

2=DATABAS

3=FIL

5=OBJEKT (tabellnivå)

6=PAGE

7=NYCKEL

8=OMFATTNING

9=RID

10=TILLÄMPNING

11=METADATA

12=HOBT

13=ALLOCATION_UNIT
57 Yes

Examples

Följande exempel använder sp_trace_create proceduren för att skapa en spårning, lägger sp_trace_setevent till låseskaleringskolumner i spåret och använder sedan sp_trace_setstatus för att starta spåret. I satser som EXEC sp_trace_setevent @TraceID, 60, 22, 1, anger siffran 60 eskaleringshändelseklassen, 22 anger kolumnen ObjectID och 1 sätter spårningshändelsen till 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  

Nu när spårningen körs, kör de satser du vill spåra. När de är klara, kör följande kod för att stoppa och stäng sedan spåret. Detta exempel använder fn_trace_getinfo funktionen för att få att använda i traceid satserna 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  

Se även

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