Lock:Escalation-Ereignisklasse

Gilt für:SQL Server

Die Lock:Escalation-Ereignisklasse zeigt an, dass eine differenziertere Sperre in eine gröbere Sperre konvertiert wurde (z.B. eine Zeilensperre, die in eine Objektsperre konvertiert wurde). Die Ausweitungsereignisklasse hat die Ereignis-ID 60.

Datenspalten der Lock:Escalation-Ereignisklasse

Datenspaltenname Datentyp BESCHREIBUNG Column ID Filterbar
ApplicationName nvarchar Name der Clientanwendung, die die Verbindung mit einer Instanz von SQL Serverhergestellt hat. Diese Spalte wird mit den Werten aufgefüllt, die von der Anwendung übergeben werden, und nicht mit dem angezeigten Namen des Programms. 10 Ja
ClientProcessID int Die ID, die der Hostcomputer dem Prozess zuweist, in dem die Clientanwendung ausgeführt wird. Diese Datenspalte wird aufgefüllt, wenn der Client die Clientprozess-ID angibt. 9 Ja
DatabaseID int Die ID der Datenbank, in der die Sperre eingerichtet wurde. SQL Server Profiler zeigt den Namen der Datenbank an, wenn die ServerName -Datenspalte in der Ablaufverfolgung aufgezeichnet wird und der Server verfügbar ist. Der Wert für eine Datenbank kann mithilfe der DB_ID-Funktion ermittelt werden. 3 Ja
DatabaseName nvarchar Der Name der Datenbank, in der die Sperrenausweitung auftrat. 35 Ja
EventClass int Ereignistyp = 60. 27 Nein
EventSubClass int Die Ursache der Sperrenausweitung:

0 - LOCK_THRESHOLD zeigt an, dass die Anweisung den Sperrengrenzwert überschritten hat.

1 - MEMORY_THRESHOLD zeigt an, dass die Anweisung den Grenzwert für den Arbeitsspeicher überschritten hat.
21 Ja
EventSequence int Sequenz eines bestimmten Ereignisses innerhalb der Anforderung. 51 Nein
GroupID int ID der Arbeitsauslastungsgruppe, in der das SQL-Ablaufverfolgungsereignis ausgelöst wird. 66 Ja
HostName nvarchar Der Name des Computers, auf dem der Client ausgeführt wird. Diese Datenspalte wird aufgefüllt, wenn der Hostname vom Client bereitgestellt wird. Der Hostname kann mithilfe der HOST_NAME-Funktion bestimmt werden. 8 Ja
IntegerData int Die Anzahl der Heap- oder B-Struktursperren. Die Anzahl der Sperren für die Heap- oder B-Struktur zum Zeitpunkt der Sperrenausweitung. 25 Ja
IntegerData2 int Die Anzahl der ausgeweiteten Sperren. Die Gesamtanzahl von konvertierten Sperren. Für diese Sperrenstrukturen wird die Zuweisung aufgehoben, da sie bereits durch die ausgeweitete Sperre abgedeckt sind. 55 Ja
IsSystem int Gibt an, ob das Ereignis bei einem Systemprozess oder einem Benutzerprozess aufgetreten ist. 1 = System, 0 = Benutzer. 60 Ja
LineNumber int Zeilennummer der Transact-SQL-Anweisung. 5 Ja
LoginName nvarchar Der Anmeldename des Benutzers ( SQL Server -Sicherheitsanmeldung oder Microsoft Windows-Anmeldeinformationen im Format DOMAIN\username). 11 Ja
LoginSid image Sicherheits-ID (SID) des angemeldeten Benutzers. Diese Informationen finden Sie in der sys.server_principals -Katalogsicht. Die SID ist für jede Anmeldung beim Server eindeutig. 41 Ja
Mode int Der Sperrmodus nach der Ausweitung.

0 = NULL - Kompatibel mit allen anderen Sperrmodi (LCK_M_NL)

1 = Schemastabilitätssperre (LCK_M_SCH_S)

2 = Schemaänderungssperre (LCK_M_SCH_M)

3 = Freigegebene Sperre (LCK_M_S)

4 = Updatesperre (LCK_M_U)

5 = Exklusive Sperre (LCK_M_X)

6 = Beabsichtigte freigegebene Sperre (LCK_M_IS)

7 = Beabsichtigte Updatesperre (LCK_M_IU)

8 = Beabsichtigte exklusive Sperre (LCK_M_IX)

9 = Freigegebene Sperre mit beabsichtigter Updatesperre (LCK_M_SIU)

10 = Freigegebene Sperre mit beabsichtigter exklusiver Sperre (LCK_M_SIX)

11 = Updatesperre mit beabsichtigter exklusiver Sperre (LCK_M_UIX)

12 = Massenupdatesperre (LCK_M_BU)

13 = Freigegebene Sperren für Schlüsselbereich und Ressource (LCK_M_RS_S)

14 = Freigegebene Sperre für Schlüsselbereich und Updatesperre für Ressource (LCK_M_RS_U)

15 = Einfügungssperre für Schlüsselbereich und NULL-Sperre für Ressource (LCK_M_RI_NL)

16 = Einfügungssperre für Schlüsselbereich und freigegebene Ressourcensperre (LCK_M_RI_S)

17 = Einfügungssperre für Schlüsselbereich und Updatesperre (LCK_M_RI_U)

18 = Einfügungssperre für Schlüsselbereich und exklusive Ressourcensperre (LCK_M_RI_X)

19 = Exklusive Sperren für Schlüsselbereich und freigegebene Ressource (LCK_M_RX_S)

20 = Exklusive Sperren für Schlüsselbereich und Update (LCK_M_RX_U)

21 = Exklusive Sperren für Schlüsselbereich und Ressource (LCK_M_RX_X)
32 Ja
NTDomainName nvarchar Windows-Domäne, zu der der Benutzer gehört. 7 Ja
NTUserName nvarchar Windows-Benutzername. 6 Ja
ObjectID int Die vom System zugewiesene ID der Tabelle, für die die Sperrenausweitung ausgelöst wurde. 22 Ja
ObjectID2 bigint Die ID des verbundenen Objekts oder der verbundenen Entität. (Die Heap- oder B-Struktur-ID, für die die Sperrenausweitung ausgelöst wurde.) 56 Ja
Offset int Startoffset der Transact-SQL-Anweisung. 61 Ja
OwnerID int 1 = TRANSACTION

2 = CURSOR

3 = SESSION

4 = SHARED_TRANSACTION_WORKSPACE

5 = EXCLUSIVE_TRANSACTION_WORKSPACE

6 = WAITFOR_QUERY
58 Ja
RequestID int Die ID der Anforderung, die die Anweisung enthält. 49 Ja
ServerName nvarchar Name der SQL Server -Instanz, für die eine Ablaufverfolgung ausgeführt wird. 26 Nein
SessionLoginName nvarchar Der Anmeldename des Benutzers, der die Sitzung gestartet hat. Wenn Sie z. B. mit Login1 eine Verbindung zu SQL Server herstellen und mit Login2 eine Anweisung ausführen, zeigt SessionLoginName Login1 an, und LoginName zeigt Login2 an. Diese Spalte zeigt sowohl den SQL Server - als auch den Windows-Anmeldenamen an. 64 Ja
SPID int Die ID der Sitzung, in der das Ereignis aufgetreten ist. 12 Ja
StartTime datetime Zeitpunkt, zu dem das Ereignis begonnen hat (falls vorhanden). 14 Ja
TextData ntext Text der Transact-SQL-Anweisung, die die Sperreskalation verursacht hat. 1 Ja
TransactionID bigint Die vom System zugewiesene ID der Transaktion. 4 Ja
Type int Granularität der Sperrenausweitung:

1 = NULL_RESOURCE

2 = DATABASE

3 = FILE

5 = OBJECT (Tabellenebene)

6 = PAGE

7 = KEY

8 = EXTENT

9 = RID

10 = APPLICATION

11 = METADATA

12 = HOBT

13 = ALLOCATION_UNIT
57 Ja

Beispiele

Im folgenden Beispiel wird mit der sp_trace_create -Prozedur eine Ablaufverfolgung erstellt, mit sp_trace_setevent werden der Ablaufverfolgung Spalten für die Sperrenausweitung hinzugefügt, und mit sp_trace_setstatus wird die Ablaufverfolgung gestartet. In Anweisungen wie EXEC sp_trace_setevent @TraceID, 60, 22, 1zeigt die Zahl 60 die Ausweitungsereignisklasse und die Zahl 22 die ObjectID -Spalte an. Durch 1 wird das Ablaufverfolgungsereignis auf ON festgelegt.

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  

Sobald die Ablaufverfolgung läuft, können Sie die zu verfolgenden Anweisungen ausführen. Nach Abschluss der Anweisungen führen Sie den folgenden Code aus, um die Ablaufverfolgung zu beenden und zu schließen. In diesem Beispiel wird mit der fn_trace_getinfo -Funktion die in den traceid -Anweisungen zu verwendende sp_trace_setstatus abgerufen.

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

Weitere Informationen

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