Freigeben über


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

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

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

Die 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

Die Sicherheits-ID (SID) des angemeldeten Benutzers. Diese Informationen sind in der sys.server_principals-Katalogsicht enthalten. 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

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 beispielsweise mithilfe von Login1 eine Verbindung mit SQL Server herstellen und eine Anweisung als Login2 ausführen, zeigt SessionLoginName den Wert Login1 an, LoginName dagegen den Wert Login2. 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

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

Die 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

Verweis

sp_trace_setevent (Transact-SQL)

sys.dm_tran_locks (Transact-SQL)