Classe di evento Lock:Escalation
La classe di evento Lock:Escalation indica che un blocco con granularità fine è stato convertito in un blocco con granularità grossolana, ad esempio un blocco di riga è stato convertito in blocco di oggetto. La classe di evento dell'escalation è l'ID evento 60.
Colonne di dati della classe di evento Lock:Escalation
Nome colonna di dati |
Tipo di dati |
Descrizione |
ID colonna |
Filtrabile |
---|---|---|---|---|
ApplicationName |
nvarchar |
Nome dell'applicazione client in cui è stata creata la connessione a un'istanza di SQL Server. Questa colonna viene popolata con i valori passati dall'applicazione anziché con il nome visualizzato del programma. |
10 |
Sì |
ClientProcessID |
int |
ID assegnato dal computer host al processo in cui è in esecuzione l'applicazione client. Questa colonna di dati viene popolata se il client fornisce l'ID del processo client. |
9 |
Sì |
DatabaseID |
int |
ID del database in cui è stato acquisito il blocco. In SQL Server Profiler viene visualizzato il nome del database se l'acquisizione per la traccia include la colonna di dati ServerName e il server è disponibile. È possibile determinare il valore per un database utilizzando la funzione DB_ID. |
3 |
Sì |
DatabaseName |
nvarchar |
Nome del database in cui si è verificata l'escalation. |
35 |
Sì |
EventClass |
int |
Tipo di evento = 60. |
27 |
No |
EventSubClass |
int |
Causa dell'escalation dei blocchi: 0 - LOCK_THRESHOLD indica che l'istruzione supera la soglia del blocco. 1 - MEMORY_THRESHOLD indica che l'istruzione supera la soglia di memoria. |
21 |
Sì |
EventSequence |
int |
Sequenza di un determinato evento nella richiesta. |
51 |
No |
GroupID |
int |
ID del gruppo del carico di lavoro dove l'evento Traccia SQL provoca l'attivazione. |
66 |
Sì |
HostName |
nvarchar |
Nome del computer in cui è in esecuzione il client. Questa colonna di dati viene popolata se il client fornisce il nome host. Per determinare il nome host, utilizzare la funzione HOST_NAME. |
8 |
Sì |
IntegerData |
int |
Conteggio dei blocchi HoBT. Numero di blocchi HoBT al momento dell'escalation dei blocchi. |
25 |
Sì |
IntegerData2 |
int |
Conteggio dei blocchi alzati di livello. Numero totale di blocchi convertiti. Queste strutture di blocco vengono deallocate poiché già coperte dal blocco alzato di livello. |
55 |
Sì |
IsSystem |
int |
Indica se l'evento si è verificato in un processo di sistema o in un processo utente. 1 = sistema, 0 = utente. |
60 |
Sì |
LineNumber |
int |
Numero di riga dell'istruzione Transact-SQL. |
5 |
Sì |
LoginName |
nvarchar |
Nome dell'account di accesso dell'utente (account di protezione di SQL Server o credenziali di accesso di Microsoft Windows nel formato DOMINIO\nomeutente). |
11 |
Sì |
LoginSid |
image |
ID di protezione (SID) dell'utente connesso. Queste informazioni sono disponibili nella vista del catalogo sys.server_principals. Il SID è univoco per ogni account di accesso nel server. |
41 |
Sì |
Mode |
int |
Modalità di blocco risultante dopo l'escalation: 0=NULL - Compatibile con tutte le altre modalità di blocco (LCK_M_NL) 1=Blocco di stabilità dello schema (LCK_M_SCH_S) 1=Blocco di modifica dello schema (LCK_M_SCH_M) 3=Blocco condiviso (LCK_M_S) 4=Blocco di aggiornamento (LCK_M_U) 5=Blocco esclusivo (LCK_M_X) 6=Blocco condiviso preventivo (LCK_M_IS) 7=Blocco di aggiornamento preventivo (LCK_M_IU) 8=Blocco esclusivo preventivo (LCK_M_IX) 9=Condiviso-Preventivo-Aggiornamento (LCK_M_SIU) 10=Condiviso-Preventivo-Esclusivo (LCK_M_SIX) 10=Aggiornamento-Preventivo-Esclusivo (LCK_M_SIX) 12=Blocco aggiornamenti bulk (LCK_M_BU) 13=Intervalli di chiavi-Condiviso/Condiviso (LCK_M_RS_S) 14=Intervalli di chiavi-Condiviso/Aggiornamento (LCK_M_RS_U) 15=Intervalli di chiavi-Inserimento-NULL (LCK_M_RI_NL) 16=Intervalli di chiavi-Inserimento-Condiviso (LCK_M_RI_S) 17=Intervalli di chiavi-Inserimento-Aggiornamento (LCK_M_RI_U) 18=Intervalli di chiavi-Inserimento-Esclusivo (LCK_M_RI_X) 19=Intervalli di chiavi-Esclusivo-Condiviso (LCK_M_RX_S) 20=Intervalli di chiavi-Esclusivo-Aggiornamento (LCK_M_RX_U) 21=Intervalli di chiavi-Esclusivo-Esclusivo (LCK_M_RX_X) |
32 |
Sì |
NTDomainName |
nvarchar |
Dominio di Windows a cui appartiene l'utente. |
7 |
Sì |
NTUserName |
nvarchar |
Nome utente di Windows. |
6 |
Sì |
ObjectID |
int |
ID assegnato dal sistema della tabella per la quale è stata generata l'escalation dei blocchi. |
22 |
Sì |
ObjectID2 |
bigint |
ID dell'entità o dell'oggetto correlato. (ID HoBT per il quale è stata generata l'escalation dei blocchi). |
56 |
Sì |
Offset |
int |
Offset iniziale dell'istruzione Transact-SQL. |
61 |
Sì |
OwnerID |
int |
1=TRANSACTION 2=CURSOR 3=SESSION 4=SHARED_TRANSACTION_WORKSPACE 5=EXCLUSIVE_TRANSACTION_WORKSPACE 6=WAITFOR_QUERY |
58 |
Sì |
RequestID |
int |
ID della richiesta contenente l'istruzione. |
49 |
Sì |
ServerName |
nvarchar |
Nome dell'istanza di SQL Server tracciata. |
26 |
No |
SessionLoginName |
nvarchar |
Nome dell'account di accesso dell'utente che ha avviato la sessione. Ad esempio, se si attiva la connessione a SQL Server con l'account di accesso Login1 e si esegue un'istruzione con l'account di accesso Login2, SessionLoginName indica Login1 e LoginName indica Login2. In questa colonna vengono visualizzati sia gli account di accesso di SQL Server che quelli di Windows. |
64 |
Sì |
SPID |
int |
ID della sessione in cui si è verificato l'evento. |
12 |
Sì |
StartTime |
datetime |
Ora di inizio dell'evento, se disponibile. |
14 |
Sì |
TextData |
ntext |
Testo dell'istruzione Transact-SQL che provoca l'escalation dei blocchi. |
1 |
Sì |
TransactionID |
bigint |
ID della transazione assegnato dal sistema. |
4 |
Sì |
Type |
int |
Granularità dell'escalation dei blocchi: 1=NULL_RESOURCE 2=DATABASE 3=FILE 5=OBJECT (livello della tabella) 6=PAGE 7=KEY 8=EXTENT 9=RID 10=APPLICATION 11=METADATA 12=HOBT 13=ALLOCATION_UNIT |
57 |
Sì |
Esempi
Nel seguente esempio viene utilizzata la procedura sp_trace_create per creare una traccia, viene utilizzato sp_trace_setevent per aggiungere colonne dell'escalation dei blocchi alla traccia, quindi sp_trace_setstatus per avviare la traccia. In istruzioni come EXEC sp_trace_setevent @TraceID, 60, 22, 1, il numero 60 indica la classe di evento dell'escalation, 22 indica la colonna ObjectID e 1 imposta l'evento di traccia su 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
Dal momento che la traccia è in esecuzione, eseguire le istruzioni che si desidera creare una traccia. Una volta terminato, eseguire il seguente codice per interrompere e chiudere la traccia. Nell'esempio seguente viene utilizzata la funzione fn_trace_getinfo affinché traceid venga utilizzato nelle istruzioni 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
Vedere anche