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, 1
zeigt 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)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für