Partilhar via


Classe de evento Lock:Escalation

Aplica-se a: SQL Server

A classe de evento Lock:Escalation indica que um bloqueio mais refinado foi convertido em um bloqueio mais rústico; por exemplo, um bloqueio de linha que é convertido em um bloqueio de objeto. A classe de evento do escalonamento é ID de evento 60.

Colunas de dados da classe de evento Lock:Escalation

Nome da coluna de dados Tipo de dados Descrição ID da coluna Filtrável
ApplicationName nvarchar Nome do aplicativo cliente que criou a conexão com uma instância do SQL Server. Essa coluna é populada com os valores passados pelo aplicativo e não com o nome exibido do programa. 10 Sim
ClientProcessID int ID atribuída pelo computador host ao processo em que o aplicativo cliente está sendo executado. Essa coluna de dados será populada se o cliente fornecer a ID de processo do cliente. 9 Sim
DatabaseID int ID do banco de dados no qual foi adquirido o bloqueio. O SQL Server Profiler exibirá o nome do banco de dados se a coluna de dados ServerName for capturada no rastreamento e o servidor estiver disponível. Determine o valor para um banco de dados usando a função DB_ID. 3 Sim
DatabaseName nvarchar Nome do banco de dados no qual o escalonamento ocorreu. 35 Sim
EventClass int Tipo de evento = 60. 27 Não
EventSubClass int Causa do escalonamento de bloqueio:

0 - LOCK_THRESHOLD indica que a instrução excedeu o limite de bloqueio.

1 - MEMORY_THRESHOLD indica que a instrução excedeu o limite de memória.
21 Sim
EventSequence int Sequência de um determinado evento na solicitação. 51 Não
GroupID int ID do grupo de carga de trabalho no qual o evento de Rastreamento do SQL dispara. 66 Sim
HostName nvarchar Nome do computador no qual o cliente está sendo executado. Essa coluna de dados será populada se o cliente fornecer o nome do host. Para determinar o nome do host, use a função HOST_NAME . 8 Sim
IntegerData int Número de bloqueios do HOBT. O número de bloqueios para o HOBT no momento do escalonamento de bloqueios. 25 Sim
IntegerData2 int Número de bloqueios escalados. O número total de bloqueios que foram convertidos. Essas estruturas de bloqueio são desalocadas porque já estão cobertas pelo bloqueio escalado. 55 Sim
IsSystem int Indica se o evento ocorreu em um processo do sistema ou do usuário. 1 = sistema, 0 = usuário. 60 Sim
LineNumber int Número de linha da instrução Transact-SQL. 5 Sim
LoginName nvarchar Nome do logon do usuário (logon de segurança do SQL Server ou as credenciais de logon do Microsoft Windows na forma de DOMAIN\username). 11 Sim
LoginSid imagem Número SID (identificação de segurança) do usuário que fez logon. Você pode encontrar essas informações na exibição de catálogo sys.server_principals . Cada SID é exclusivo para cada logon no servidor. 41 Sim
Modo int Modo de bloqueio resultante após o escalonamento:

0=NULL - Compatível com todos os outros modos de bloqueio (LCK_M_NL)

1=Bloqueio de estabilidade do esquema (LCK_M_SCH_S)

2=Bloqueio de modificação de esquema (LCK_M_SCH_M)

3=Bloqueio compartilhado (LCK_M_S)

4=Bloqueio de atualização (LCK_M_U)

5=Bloqueio exclusivo (LCK_M_X)

6=Bloqueio de tentativa compartilhada (LCK_M_IS)

7=Bloqueio de atualização da tentativa (LCK_M_IU)

8=Bloqueio exclusivo da tentativa (LCK_M_IX)

9=Compartilhado com tentativa de atualizar (LCK_M_SIU)

10=Compartilhado com tentativa exclusiva (LCK_M_SIX)

11=Atualizar com tentativa exclusiva (LCK_M_UIX)

12=Bloqueio de atualização em massa (LCK_M_BU)

13=Intervalo de chaves compartilhado/compartilhado (LCK_M_RS_S)

14=Intervalo de chaves compartilhado/atualizar (LCK_M_RS_U)

15=Inserção de Intervalo de Chaves NULL (LCK_M_RI_NL)

16=Inserção de Intervalo de Chaves Compartilhado (LCK_M_RI_S)

17=Atualização de Inserção de Intervalo de Chaves (LCK_M_RI_S)

18=Inserção de intervalo de chaves exclusivo (LCK_M_RI_X)

19=Intervalo de chaves compartilhado exclusivo (LCK_M_RX_S)

20=Atualização de intervalo de chaves exclusivo (LCK_M_RX_U)

21=Intervalo de chaves exclusivo exclusivo (LCK_M_RX_X)
32 Sim
NTDomainName nvarchar O domínio do Windows ao qual o usuário pertence. 7 Sim
NTUserName nvarchar Nome do usuário do Windows. 6 Sim
ObjectID int ID atribuída pelo sistema da tabela para a qual o escalonamento de bloqueios foi acionado. 22 Sim
ObjectID2 bigint ID do objeto ou entidade relacionado. (ID do HOBT para o qual o escalonamento de bloqueios foi acionado.) 56 Sim
Deslocamento int Deslocamento inicial da instrução Transact-SQL. 61 Sim
OwnerID int 1=TRANSACTION

2=CURSOR

3=SESSION

4=SHARED_TRANSACTION_WORKSPACE

5=EXCLUSIVE_TRANSACTION_WORKSPACE

6=WAITFOR_QUERY
58 Sim
RequestID int ID da solicitação que contém a instrução. 49 Sim
ServerName nvarchar Nome da instância do SQL Server que está sendo rastreada. 26 Não
SessionLoginName nvarchar Nome de logon do usuário que originou a sessão. Por exemplo, se você se conectar ao SQL Server usando Login1 e executar uma instrução como Login2, SessionLoginName mostrará Login1 e LoginName mostrará Login2. Esta coluna exibe logons do SQL Server e do Windows. 64 Sim
SPID int Identificação da sessão em que ocorreu o evento. 12 Sim
StartTime datetime Hora de início do evento, se disponível. 14 Sim
TextData ntext Texto da instrução Transact-SQL que causou o escalonamento de bloqueios. 1 Sim
TransactionID bigint ID da transação atribuída pelo sistema. 4 Sim
Tipo int Granularidade do escalonamento de bloqueios:

1=NULL_RESOURCE

2=DATABASE

3=FILE

5=OBJECT (nível de tabela)

6=PAGE

7=KEY

8=EXTENT

9=RID

10=APPLICATION

11=METADATA

12=HOBT

13=ALLOCATION_UNIT
57 Sim

Exemplos

O exemplo a seguir usa o procedimento sp_trace_create para criar um rastreamento, usa sp_trace_setevent para adicionar colunas de escalonamento de bloqueio e depois usa sp_trace_setstatus para iniciar o rastreamento. Em instruções como EXEC sp_trace_setevent @TraceID, 60, 22, 1, o número 60 indica a classe de evento de escalonamento, 22 indica a coluna ObjectID e 1 define o evento de rastreamento como 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  

Agora que o rastreamento está sendo executado, execute as instruções que você quer localizar. Quando eles terminarem, execute o código seguinte para parar e então fechar o rastreamento. Este exemplo usa a função fn_trace_getinfo para conseguir usar o traceid nas instruções 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  

Confira também

sp_trace_setevent (Transact-SQL)
sys.dm_tran_locks (Transact-SQL)