Lock:Escalation-Ereignisklasse
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 |
Der Name der Clientanwendung, die die Verbindung mit einer Instanz von SQL Server hergestellt hat. Diese Spalte wird mit den von der Anwendung übergebenen Werten und nicht mit dem angezeigten Programmnamen aufgefüllt. |
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 bereitstellt. |
9 |
Ja |
DatabaseID |
int |
Die ID der Datenbank, für die 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 |
Die Sequenznummer 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 Client den Hostnamen bereitstellt. Der Hostname kann mithilfe der HOST_NAME-Funktion ermittelt 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 |
Die Zeilennummer der Transact-SQL-Anweisung. |
5 |
Ja |
LoginName |
nvarchar |
Anmeldename des Benutzers (Anmeldung der SQL Server-Sicherheit oder Microsoft Windows-Anmeldeinformationen im Format DOMAIN\username). |
11 |
Ja |
LoginSid |
image |
Die Sicherheits-ID (SID) des angemeldeten Benutzers. Diese Informationen finden Sie in der sys.server_principals-Katalogsicht. Die SID ist für jede Anmeldung am 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 = Aktualisierungssperre (LCK_M_U) 5 = Exklusive Sperre (LCK_M_X) 6 = Beabsichtigte freigegebene Sperre (LCK_M_IS) 7 = Beabsichtigte Aktualisierungssperre (LCK_M_IU) 8 = Beabsichtigte exklusive Sperre (LCK_M_IX) 9 = Freigegebene Sperre mit beabsichtigter Aktualisierungssperre (LCK_M_SIU) 10 = Freigegebene Sperre mit beabsichtigter exklusiver Sperre (LCK_M_SIX) 11 = Aktualisierungssperre mit beabsichtigter exklusiver Sperre (LCK_M_UIX) 12 = Massenaktualisierungssperre (LCK_M_BU) 13 = Freigegebene Sperren für Schlüsselbereich und Ressource (LCK_M_RS_S) 14 = Freigegebene Sperre für Schlüsselbereich und Aktualisierungssperre 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 Aktualisierungssperre (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 Aktualisierung (LCK_M_RX_U) 21 = Exklusive Sperren für Schlüsselbereich und Ressource (LCK_M_RX_X) |
32 |
Ja |
NTDomainName |
nvarchar |
Die Windows-Domäne, der der Benutzer angehört. |
7 |
Ja |
NTUserName |
nvarchar |
Der 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 |
Der 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 Instanz von SQL Server, für die eine Ablaufverfolgung ausgeführt wird |
26 |
Nein |
SessionLoginName |
nvarchar |
Der Anmeldename des Benutzers, der die Sitzung geöffnet 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 |
ID der Sitzung, bei der das Ereignis aufgetreten ist |
12 |
Ja |
StartTime |
datetime |
Der Zeitpunkt, zu dem das Ereignis begonnen hat (falls verfügbar). |
14 |
Ja |
TextData |
ntext |
Der Text der Transact-SQL-Anweisung, die die Sperrenausweitung ausgelöst hat. |
1 |
Ja |
TransactionID |
bigint |
Vom System zugewiesene ID der Transaktion. |
4 |
Ja |
Typ |
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 byusing 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 sp_trace_setstatus-Anweisungen zu verwendende traceid 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
Siehe auch