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 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 Server erstellt 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 | No |
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 | No |
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. Verwenden Sie die HOST_NAME -Funktion, um den Hostnamen zu bestimmen. | 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 | Name der Anmeldung des Benutzers (entweder SQL Server-Sicherheitsanmeldung oder Microsoft Windows-Anmeldeinformationen in Form von DOMÄNE\Benutzername). | 11 | Ja |
LoginSid | Abbildung | 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 | Starten des Offsets 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 Instanz von SQL Server, die nachverfolgt wird. | 26 | No |
SessionLoginName | nvarchar | Der Anmeldename des Benutzers, der die Sitzung gestartet hat. Wenn Sie beispielsweise mithilfe von Login1 eine Verbindung mit SQL Server herstellen und eine Anweisung als Login2 ausführen, zeigt SessionLoginName "Login1" und "LoginName " "Login2" an. In dieser Spalte werden sowohl SQL Server- als auch Windows-Anmeldungen angezeigt. | 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 eine 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)