Classe di evento Lock:Escalation
Si applica a: SQL Server
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 che ha creato la connessione a un'istanza di SQL Server. Questa colonna viene popolata con i valori passati dall'applicazione e non 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 tramite il client viene indicato l'ID del processo client. | 9 | Sì |
DatabaseID | int | ID del database in cui è stato acquisito il blocco. SQL Server Profiler visualizza il nome del database se la colonna di dati ServerName è acquisita nella traccia e il server è disponibile. 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 all'interno della richiesta. | 51 | No |
GroupID | int | ID del gruppo del carico di lavoro in cui viene generato l'evento di Traccia SQL. | 66 | Sì |
HostName | nvarchar | Nome del computer in cui viene eseguito il client. Questa colonna di dati viene popolata se il client fornisce il nome host. Per determinare il nome host, usare 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 è stato generato per un processo di sistema o 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 accesso di sicurezza di SQL Server o credenziali di accesso di Microsoft Windows sotto forma di DOMINIO\nomeutente). | 11 | Sì |
LoginSid | Immagine | ID di sicurezza (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ì |
Modalità | 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 Windows di appartenenza dell'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 ci si connette a SQL Server usando Login1 ed eseguire un'istruzione come Login2, SessionLoginName mostra Login1 e LoginName mostra Login2. In questa colonna vengono visualizzati sia gli account di accesso di SQL Server che 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 ha causato 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 by using 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 arrestare 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
Vedi anche
sp_trace_setevent (Transact-SQL)
sys.dm_tran_locks (Transact-SQL)