Delen via


Vergrendeling: Escalatiegebeurtenisklasse

Van toepassing op: SQL Server 2016 (13.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

De Lock:Escalation event class geeft aan dat een fijnkorreliger slot is omgezet in een grofkorreliger slot; bijvoorbeeld een rijslot dat wordt omgezet in een objectslot. De escalatie-event class is Event ID 60.

Lock:Escalation Event Class Data Columns

Naam van gegevenskolom Gegevenstype Description Kolom-id Filterbaar
ApplicationName nvarchar Naam van de clienttoepassing die de verbinding met een exemplaar van SQL Server heeft gemaakt. Deze kolom wordt gevuld met de waarden die door de toepassing worden doorgegeven in plaats van de weergegeven naam van het programma. 10 Yes
ClientProcessID int De id die door de hostcomputer is toegewezen aan het proces waarop de clienttoepassing wordt uitgevoerd. Deze datakolom wordt ingevuld als de client de clientproces-ID opgeeft. 9 Yes
DatabaseID int ID van de database waarin het slot is verkregen. SQL Server Profiler toont de naam van de database als de ServerName-datakolom in de trace wordt vastgelegd en de server beschikbaar is. Bepaal de waarde voor een database met behulp van de functie DB_ID. 3 Yes
DatabaseName- nvarchar Naam van de database waarin de escalatie plaatsvond. 35 Yes
EventClass int Type evenement = 60. 27 Nee.
EventSubClass int Oorzaak van de sluisescalatie:

0 - LOCK_THRESHOLD geeft aan dat de verklaring de vergrendelingsdrempel heeft overschreden.

1 - MEMORY_THRESHOLD geeft aan dat de instructie de geheugendrempel overschreed.
21 Yes
EventSequence int Volgorde van een bepaalde gebeurtenis binnen de aanvraag. 51 Nee.
GroupID int Id van de workloadgroep waarin de SQL Trace-gebeurtenis wordt geactiveerd. 66 Yes
HostNaam nvarchar Naam van de computer waarop de client wordt uitgevoerd. Deze datakolom wordt ingevuld als de client de hostnaam opgeeft. Om de hostnaam te bepalen, gebruik je de functie HOST_NAME. 8 Yes
IntegerData int HoBT-slotentelling. Het aantal sloten voor de HoBT op het moment van de sluisescalatie. vijfentwintig Yes
IntegerData2 int Verhoogd aantal sloten. Het totale aantal sluizen dat is omgebouwd. Deze sluisstructuren worden niet toegewezen omdat ze al door de geëscaleerde sluis zijn gedekt. 55 Yes
IsSystem int Geeft aan of de gebeurtenis heeft plaatsgevonden in een systeemproces of een gebruikersproces. 1 = systeem, 0 = gebruiker. 60 Yes
Lijnnummer int Regelnummer van Transact-SQL statement. 5 Yes
LoginNaam nvarchar Naam van de inloggegevens van de gebruiker (ofwel SQL Server-beveiligingslogin of de Microsoft Windows-inloggegevens in de vorm van DOMEIN\gebruikersnaam). 11 Yes
LoginSid image Beveiligingsidentificatienummer (SID) van de aangemelde gebruiker. Je kunt deze informatie vinden in de catalogusweergave van de sys.server_principals . Elke SID is uniek voor elke aanmelding op de server. 41 Yes
Mode int Resulterende lock-modus na de escalatie:

0=NULL - Compatibel met alle andere lockmodi (LCK_M_NL)

1=Schema Stabiliteitsslot (LCK_M_SCH_S)

2=Schema Modificatie Slot (LCK_M_SCH_M)

3=Gedeeld slot (LCK_M_S)

4=Update-slot (LCK_M_U)

5=Exclusief slot (LCK_M_X)

6=Intentie Gedeelde Slot (LCK_M_IS)

7=Intent Update Lock (LCK_M_IU)

8=Intentie-exclusieve Slot (LCK_M_IX)

9=Gedeeld met de intentie om te updaten (LCK_M_SIU)

10=Gedeeld met intentie exclusief (LCK_M_SIX)

11=Exclusief Bijwerken met Intentie (LCK_M_UIX)

12=Bulk Update Lock (LCK_M_BU)

13=Sleutelbereik gedeeld/gedeeld (LCK_M_RS_S)

14=Sleutelbereik gedeeld/bijgewerkt (LCK_M_RS_U)

15=Sleutelbereik Invoegen NULL (LCK_M_RI_NL)

16=Gedeeld Sleutelbereik-invoeging (LCK_M_RI_S)

17=Sleutelbereik-invoegupdate (LCK_M_RI_U)

18=Sleutelbereik Invoegsel Exclusief (LCK_M_RI_X)

19=Sleutelbereik Exclusief Gedeeld (LCK_M_RX_S)

20=Exclusieve Update van het Sleutelbereik (LCK_M_RX_U)

21=Key Range Exclusief (LCK_M_RX_X)
32 Yes
NTDomainName nvarchar Windows-domein waartoe de gebruiker behoort. 7 Yes
NTUserName nvarchar Windows-gebruikersnaam. 6 Yes
ObjectID int Systeem-toegewezen ID van de tabel waarvoor de lock-escalatie werd geactiveerd. 22 Yes
ObjectID2 bigint ID van het gerelateerde object of entiteit. (HoBT-ID waarvoor de lock-escalatie werd geactiveerd.) 56 Yes
Afstand int Startoffset van Transact-SQL statement. 61 Yes
OwnerID int 1=TRANSACTIE

2=CURSOR

3=SESSIE

4=SHARED_TRANSACTION_WORKSPACE

5=EXCLUSIVE_TRANSACTION_WORKSPACE

6=WAITFOR_QUERY
58 Yes
RequestID int Id van de aanvraag met de instructie. 49 Yes
Servernaam nvarchar De naam van het exemplaar van SQL Server dat wordt getraceerd. 26 Nee.
SessionLoginName nvarchar Aanmeldingsnaam van de gebruiker die de sessie heeft gestart. Als je bijvoorbeeld verbinding maakt met SQL Server via Login1 en een instructie uitvoert als Login2, toont SessionLoginName Login1 en LoginName Login2 . In deze kolom worden zowel SQL Server- als Windows-aanmeldingen weergegeven. 64 Yes
SPID int Id van de sessie waarop de gebeurtenis heeft plaatsgevonden. 12 Yes
StartTime datetime Tijdstip waarop de gebeurtenis is gestart, indien beschikbaar. 14 Yes
TextData ntext Tekst van de Transact-SQL verklaring die de lock-escalatie veroorzaakte. 1 Yes
TransactionID bigint Door het systeem toegewezen id van de transactie. 4 Yes
Typ int Lock-escalatie granulariteit:

1=NULL_RESOURCE

2=DATABASE

3=BESTAND

5=OBJECT (tabelniveau)

6=PAGINA

7=SLEUTEL

8=OMVANG

9=RID

10=TOEPASSING

11=METADATA

12=HOBT

13=ALLOCATION_UNIT
57 Yes

Voorbeelden

Het volgende voorbeeld gebruikt de sp_trace_create procedure om een trace te maken, gebruikt sp_trace_setevent het toevoegen van lock escalation-kolommen aan de trace, en vervolgens gebruikt sp_trace_setstatus het om de trace te starten. In statements zoals EXEC sp_trace_setevent @TraceID, 60, 22, 1, geeft het getal 60 de escalatie-event class aan, 22 geeft de ObjectID-kolom aan en 1 zet het trace-event op 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 de trace draait, voer je de statements uit die je wilt traceren. Wanneer ze klaar zijn, voer je de volgende code uit om te stoppen en sluit je vervolgens de trace. Dit voorbeeld gebruikt de fn_trace_getinfo functie om de traceid te krijgen die gebruikt moet worden in de sp_trace_setstatus statements.

-- 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  

Zie ook

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