Share 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. 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 de logon do usuário (logon de segurança do SQL Server ou as credenciais de logon do Microsoft Windows no formato DOMÍNIO/nomedousuário). 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, para se conectar ao SQL Server usando o Logon1 e executar uma instrução como Logon2, o SessionLoginName mostrará o Logon1 e o LoginName mostrará o Logon2. Essa 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 bloqueio. 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  

Consulte Também

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