Classe d'événements Lock:Escalation
La classe d'événements Lock:Escalation indique qu'un verrouillage spécifique s'est transformé en verrouillage de plus grande ampleur, comme par exemple un verrou de ligne transformé en verrou d'objet. La classe d'événements Escalation est l'ID d'événement 60.
Colonnes de données de la classe d'événements Lock:Escalation
Nom de la colonne de données |
Type de données |
Description |
ID de la colonne |
Filtrable |
---|---|---|---|---|
ApplicationName |
nvarchar |
Nom de l'application cliente qui a créé la connexion à une instance de SQL Server. Cette colonne est remplie des valeurs transmises par l'application et non pas du nom affiché du programme. |
10 |
Oui |
ClientProcessID |
int |
ID affecté par l'ordinateur hôte au processus dans lequel s'exécute l'application cliente. Cette colonne de données est remplie si le client fournit l'ID du processus client. |
9 |
Oui |
DatabaseID |
int |
ID de la base de données dans laquelle le verrou a été obtenu. Le SQL Server Profiler affiche le nom de la base de données si la colonne de données ServerName du serveur est capturée dans la trace et que le serveur est disponible. Déterminez la valeur pour une base de données à l'aide de la fonction DB_ID. |
3 |
Oui |
DatabaseName |
nvarchar |
Nom de la base de données dans laquelle a eu lieu la promotion. |
35 |
Oui |
EventClass |
int |
Type d'événement = 60. |
27 |
Non |
EventSubClass |
int |
Cause de l'escalade de verrous : 0 - LOCK_THRESHOLD indique que l'instruction a dépassé le seuil de verrou. 1 - MEMORY_THRESHOLD indique que l'instruction a dépassé le seuil de la mémoire. |
21 |
Oui |
EventSequence |
int |
Séquence d'un événement donné dans la demande. |
51 |
Non |
GroupID |
int |
ID du groupe de charges de travail où l'événement Trace SQL se déclenche. |
66 |
Oui |
HostName |
nvarchar |
Nom de l'ordinateur sur lequel s'exécute le client. La colonne de données est remplie si le client fournit le nom de l'hôte. Pour déterminer le nom de l'hôte, utilisez la fonction HOST_NAME. |
8 |
Oui |
IntegerData |
int |
Nombre de verrous HoBT. Nombre de verrous pour HoBT au moment de l'escalade de verrous. |
25 |
Oui |
IntegerData2 |
int |
Nombre de verrous escaladés. Nombre total des verrous convertis. Ces structures de verrou sont libérées parce qu'elles sont déjà couvertes par le verrou escaladé. |
55 |
Oui |
IsSystem |
int |
Indique si l'événement s'est produit sur un processus système ou sur un processus utilisateur. 1 = système, 0 = utilisateur. |
60 |
Oui |
LineNumber |
int |
Numéro de ligne de l'instruction Transact-SQL. |
5 |
Oui |
LoginName |
nvarchar |
Nom de la connexion de l'utilisateur (soit la connexion de sécurité SQL Server, soit les informations d'identification de connexion Microsoft Windows au format DOMAINE\nom_utilisateur). |
11 |
Oui |
LoginSid |
image |
Numéro d'identification de sécurité (SID) de l'utilisateur connecté. Vous pouvez trouver ces informations dans l'affichage catalogue sys.server_principals. Chaque connexion possède un SID unique au niveau du serveur. |
41 |
Oui |
Mode |
int |
Mode de verrouillage obtenu après l'escalade : 0=NULL - Compatible avec tous les autres modes de verrouillage (LCK_M_NL) 1=Verrou de stabilité de schéma (LCK_M_SCH_S) 2 = verrou de modification de schéma (LCK_M_SCH_M) 3 = verrou partagé (LCK_M_S) 4 = verrou de mise à jour (LCK_M_U) 5 = verrou exclusif (LCK_M_X) 6 = verrou Intent partagé (LCK_M_IS) 7 = verrou Intent de mise à jour (LCK_M_IU) 8 = verrou Intent exclusif (LCK_M_IX) 9 = verrou partagé avec mise à jour Intent (LCK_M_SIU) 10 = verrou partagé avec Intent exclusif (LCK_M_SIX) 11 = verrou mise à jour avec Intent exclusif (LCK_M_UIX) 12 = verrou de mise à jour en bloc (LCK_M_BU) 13 = verrou d'étendue de clés partagé/de ressources partagé (LCK_M_RS_S) 14 = verrou d'étendue de clés partagé/de ressources partagé (LCK_M_RS_U) 15 = verrou d'étendue de clés d'insertion de valeurs NULL (LCK_M_RI_NL) 16 = verrou d'étendue de clés d'insertion partagé (LCK_M_RI_S) 17 = verrou d'étendue de clés d'insertion de mise à jour (LCK_M_RI_U) 18 = verrou d'étendue de clés d'insertion exclusif (LCK_M_RI_X) 19 = verrou d'étendue de clés exclusif partagé (LCK_M_RX_S) 20 = verrou d'étendue de clés exclusif de mise à jour (LCK_M_RX_U) 21 = verrou d'étendue de clés exclusif/de ressources exclusif (LCK_M_RX_X) |
32 |
Oui |
NTDomainName |
nvarchar |
Domaine Windows auquel appartient l'utilisateur. |
7 |
Oui |
NTUserName |
nvarchar |
Nom d'utilisateur Windows. |
6 |
Oui |
ObjectID |
int |
ID assigné par système de la table pour laquelle l'escalade de verrous a été déclenchée. |
22 |
Oui |
ObjectID2 |
bigint |
ID de l'objet ou de l'entité associé. (ID HoBT pour lequel l'escalade de verrous a été déclenchée.) |
56 |
Oui |
Offset |
int |
Décalage de départ de l'instruction Transact-SQL. |
61 |
Oui |
OwnerID |
int |
1=TRANSACTION 2=CURSOR 3=SESSION 4=SHARED_TRANSACTION_WORKSPACE 5=EXCLUSIVE_TRANSACTION_WORKSPACE 6=WAITFOR_QUERY |
58 |
Oui |
RequestID |
int |
ID de la demande contenant l'instruction. |
49 |
Oui |
ServerName |
nvarchar |
Nom de l'instance SQL Server tracée. |
26 |
Non |
SessionLoginName |
nvarchar |
Affiche le nom de l'utilisateur qui a initialisé la session. Par exemple, si vous vous connectez à SQL Server en utilisant le nom d'utilisateur Login1 et exécutez une instruction sous le nom Login2, SessionLoginName retourne Login1 et LoginName retourne Login2. Cette colonne affiche à la fois les connexions SQL Server et Windows. |
64 |
Oui |
SPID |
int |
ID de la session au cours de laquelle l'événement s'est produit. |
12 |
Oui |
StartTime |
datetime |
Heure de début de l'événement, si disponible. |
14 |
Oui |
TextData |
ntext |
Texte de l'instruction Transact-SQL qui a provoqué l'escalade de verrous. |
1 |
Oui |
TransactionID |
bigint |
ID affecté par le système à la transaction. |
4 |
Oui |
Type |
int |
Granularité de l'escalade de verrous : 1=NULL_RESOURCE 2=DATABASE 3=FILE 5=OBJECT (niveau table) 6=PAGE 7=KEY 8=EXTENT 9=RID 10=APPLICATION 11=METADATA 12=HOBT 13=ALLOCATION_UNIT |
57 |
Oui |
Exemples
L'exemple suivant utilise la procédure sp_trace_create pour créer une trace, utilise sp_trace_setevent pour ajouter des colonnes d'escalade de verrous à la trace, puis utilise sp_trace_setstatus pour démarrer la trace. Dans les instructions telles que EXEC sp_trace_setevent @TraceID, 60, 22, 1, le nombre 60 désigne la classe d'événements d'escalade, 22 désigne la colonne ObjectID et 1 affecte à l'événement de trace la valeur ON.
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
Maintenant que la trace s'exécute, exécutez les instructions que vous souhaitez tracer. Une fois ces instructions terminées, exécutez le code suivant pour arrêter et puis fermer la trace. Cet exemple utilise la fonction fn_trace_getinfo pour utiliser traceid dans les instructions sp_trace_setstatus.
-- 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