Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Lock:Escalation-Ereignisklasse gibt an, dass eine feiner gekörnte Sperre in eine grober gekörnte Sperre konvertiert wurde; Beispielsweise eine Zeilensperre, die in eine Objektsperre konvertiert wird. Die Eskalationsereignisklasse ist Ereignis-ID 60.
Lock: Eskalationsereignis-Klassendatenspalten
| Datenspaltenname | Datentyp | BESCHREIBUNG | Spalten-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 |
ID der Datenbank, in der die Sperre erworben 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 |
Name der Datenbank, in der die Eskalation aufgetreten ist. | 35 | Ja |
| EventClass | int |
Typ des Ereignisses = 60. | 27 | Nein |
| EventSubClass | int |
Ursache der Sperreskalation: 0 - LOCK_THRESHOLD gibt an, dass die Anweisung den Sperrschwellenwert überschritten hat. 1 – MEMORY_THRESHOLD gibt an, dass die Anweisung den Speicherschwellenwert ü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. Verwenden Sie die HOST_NAME -Funktion, um den Hostnamen zu bestimmen. | 8 | Ja |
| IntegerData | int |
Anzahl der HoBT-Sperren. Die Anzahl der Sperren für das HoBT zum Zeitpunkt der Sperreskalation. | 25 | Ja |
| IntegerData2 | int |
Erhöhte Sperrzähler. Die Gesamtanzahl der Schlösser, die konvertiert wurden. Diese Sperrstrukturen werden freigegeben, da sie bereits durch die eskalierte 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 | 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 |
| Modus | int |
Resultierender Sperrmodus nach der Eskalation: 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=Freigegebene Absichtssperre (LCK_M_IS) 7=Absichtsaktualisierungssperre (LCK_M_IU) 8=Intent Exclusive Lock (LCK_M_IX) 9=Für Aktualisierung freigegeben (LCK_M_SIU) 10=Mit Intent exklusiv geteilt (LCK_M_SIX) 11=Aktualisierung mit exklusiver Absicht (LCK_M_UIX) 12=Massenaktualisierungssperre (LCK_M_BU) 13=Schlüsselbereich Freigegeben/Freigegeben (LCK_M_RS_S) 14=Schlüsselbereich geteilt/Aktualisierung (LCK_M_RS_U) 15=Schlüsselbereich NULL-Einfügen (LCK_M_RI_NL) 16=Schlüsselbereich gemeinsam einfügen (LCK_M_RI_S) 17=Key Range Insert Update (LCK_M_RI_U) 18=Schlüsselbereichs-Einfügen exklusiv (LCK_M_RI_X) 19=Schlüsselbereich exklusiv geteilt (LCK_M_RX_S) 20=Key Range Exclusive Update (LCK_M_RX_U) 21=Schlüsselbereich Ausschließlich Ausschließlich (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 |
Vom System zugewiesene ID der Tabelle, für die die Sperreskalation ausgelöst wurde. | 22 | Ja |
| ObjectID2 | bigint |
ID des zugehörigen Objekts oder der zugehörigen Entität. (HoBT-ID, für die die Lock-Eskalation ausgelöst wurde.) | 56 | Ja |
| Offset- | int |
Der Start-Offset der Transact-SQL-Anweisung. | 61 | Ja |
| OwnerID | int |
1=TRANSAKTION 2=CURSOR 3=Sitzung 4=SHARED_TRANSACTION_WORKSPACE 5=EXKLUSIVER_TRANSAKTIONSARBEITSBEREICH 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 | Nein |
| 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 Anweisung Transact-SQL, die eine Eskalation der Sperre verursacht hat. | 1 | Ja |
| TransactionID | bigint |
Die vom System zugewiesene ID der Transaktion. | 4 | Ja |
| Typ | int |
Granularität der Sperreneskalation 1=NULL_RESOURCE 2=DATENBANK 3=DATEI 5=OBJECT (Tabellenebene) 6=SEITE 7=SCHLÜSSEL 8=UMFANG 9=RID 10=ANWENDUNG 11=METADATEN 12=HOBT 13=ALLOCATION_UNIT |
57 | Ja |
Beispiele
Im folgenden Beispiel wird das Verfahren sp_trace_create zum Erstellen einer Ablaufverfolgung verwendet, danach sp_trace_setevent zum Hinzufügen von Sperreskalationsspalten zur Ablaufverfolgung und schließlich sp_trace_setstatus zum Starten der Ablaufverfolgung. In Anweisungen wie EXEC sp_trace_setevent @TraceID, 60, 22, 1z. B. gibt die Zahl 60 die Eskalationsereignisklasse an, 22 gibt die ObjectID-Spalte an und 1 legt das Ablaufverfolgungsereignis auf ON fest.
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
Da die Ablaufverfolgung jetzt läuft, führen Sie die Anweisungen aus, die Sie protokollieren möchten. Führen Sie nach Abschluss der Ausführung den folgenden Code aus, um die Protokollierung zu beenden und dann zu schließen. In diesem Beispiel wird die fn_trace_getinfo-Funktion verwendet, um die traceid in den sp_trace_setstatus-Anweisungen zu verwenden.
-- 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
sp_trace_setevent (Transact-SQL)
sys.dm_tran_locks (Transact-SQL)