Partilhar via


Lock:Classe de evento de escalonamento

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

A classe de evento Lock:Escalation indica que uma fechadura de granulação mais fina foi convertida numa fechadura de granulação mais grossa; por exemplo, um bloqueio de linha que é convertido num bloqueio de objeto. A classe do evento de escalonamento é ID de Evento 60.

Lock:Colunas de Dados da Classe de Evento de Escalamento

Nome da coluna de dados Tipo de dados Description ID da coluna Filtrável
Nome do aplicativo nvarchar Nome do aplicativo cliente que criou a conexão com uma instância do SQL Server. Esta coluna é preenchida com os valores passados pelo aplicativo em vez do nome exibido do programa. 10 Yes
ClientProcessID int ID atribuído pelo computador host ao processo em que o aplicativo cliente está sendo executado. Esta coluna de dados é preenchida se o cliente fornecer o ID do processo do cliente. 9 Yes
Base de Dados int ID da base de dados onde o cadeado foi adquirido. O SQL Server Profiler apresenta o nome da base de dados se a coluna de dados ServerName for capturada no rastreio e o servidor estiver disponível. Determine o valor de um banco de dados usando a função DB_ID. 3 Yes
DatabaseName nvarchar Nome da base de dados onde ocorreu a escalada. 35 Yes
EventClass int Tipo de evento = 60. 27 Não
EventSubClass int Causa da escalada do bloqueio:

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

1 - MEMORY_THRESHOLD indica que a instrução ultrapassou o limiar de memória.
21 Yes
EventSequence int Sequência de um determinado evento dentro da solicitação. 51 Não
GroupID int ID do grupo de carga de trabalho onde o evento Rastreamento SQL é acionado. 66 Yes
Nome do host nvarchar Nome do computador no qual o cliente está sendo executado. Esta coluna de dados é preenchida se o cliente fornecer o nome do anfitrião. Para determinar o nome do anfitrião, use a função HOST_NAME. 8 Yes
IntegerData int Contagem de bloqueios HoBT. O número de bloqueios para o HoBT no momento da escalada da fechadura. 25 Yes
IntegerData2 int Aumento do número de fechaduras. O número total de eclusas que foram convertidas. Estas estruturas de eclusas são desalocadas porque já estão cobertas pela eclusa escalonada. 55 Yes
IsSystem int Indica se o evento ocorreu em um processo do sistema ou em um processo do usuário. 1 = sistema, 0 = utilizador. 60 Yes
Número da linha int Número de linha da declaração Transact-SQL. 5 Yes
LoginName nvarchar Nome do login do utilizador (seja login de segurança SQL Server ou credenciais de login do Microsoft Windows na forma de DOMÍNIO\nome de utilizador). 11 Yes
LoginSid image Número de identificação de segurança (SID) do utilizador com sessão iniciada. Pode encontrar esta informação na vista de catálogo sys.server_principals . Cada SID é único para cada login no servidor. 41 Yes
Modo int Modo de bloqueio resultante após a escalada:

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

1=Bloqueio de Estabilidade de Esquema (LCK_M_SCH_S)

2=Bloqueio de Modificação de Esquema (LCK_M_SCH_M)

3=Fechadura Partilhada (LCK_M_S)

4=Atualizar Bloqueio (LCK_M_U)

5=Fechadura Exclusiva (LCK_M_X)

6=Fechadura Partilhada por Intenção (LCK_M_IS)

7=Bloqueio de Atualização de Intenção (LCK_M_IU)

8=Bloqueio Exclusivo de Intenção (LCK_M_IX)

9=Partilhado com intenção de Atualizar (LCK_M_SIU)

10=Partilhado com Intenção Exclusivo (LCK_M_SIX)

11=Atualização com Intenção Exclusiva (LCK_M_UIX)

12=Bloqueio de Atualização em Massa (LCK_M_BU)

13=Gama de chaves Partilhada/Partilhada (LCK_M_RS_S)

14=Intervalo de chaves Partilhado/Atualização (LCK_M_RS_U)

15=Intervalo de Chaves Inserir NULL (LCK_M_RI_NL)

16=Inserir Intervalo de Chaves Partilhado (LCK_M_RI_S)

17=Atualização de Inserção de Gama de Chaves (LCK_M_RI_U)

18=Exclusivo de Inserção de Gama de Chaves (LCK_M_RI_X)

19=Intervalo de Chaves Partilhado Exclusivo (LCK_M_RX_S)

20=Atualização Exclusiva da Gama de Chaves (LCK_M_RX_U)

21=Key Range Exclusivo Exclusivo (LCK_M_RX_X)
32 Yes
NTDomainName nvarchar Domínio do Windows ao qual o usuário pertence. 7 Yes
NTUserName nvarchar Nome de usuário do Windows. 6 Yes
ObjectID int ID atribuído ao sistema da tabela para a qual a escalada de bloqueio foi acionada. 22 Yes
ObjectID2 bigint ID do objeto ou entidade relacionada. (ID HoBT para o qual a escalada do bloqueio foi ativada.) 56 Yes
Deslocamento int Deslocamento inicial de Transact-SQL afirmação. 61 Yes
OwnerID int 1=TRANSAÇÃO

2=CURSOR

3=SESSÃO

4=SHARED_TRANSACTION_WORKSPACE

5=EXCLUSIVE_TRANSACTION_WORKSPACE

6=WAITFOR_QUERY
58 Yes
RequestID int ID do pedido que contém a declaração. 49 Yes
ServerName nvarchar Nome da instância do SQL Server que está sendo rastreada. 26 Não
SessionLoginName nvarchar Nome de login do usuário que originou a sessão. Por exemplo, se se ligar ao SQL Server usando o Login1 e executar uma instrução como Login2, o SessionLoginName mostra o Login1 e o LoginName mostra o Login2. Esta coluna exibe os logons do SQL Server e do Windows. 64 Yes
SPID int ID da sessão em que o evento ocorreu. 12 Yes
Horário de Início datetime Hora de início do evento, se disponível. 14 Yes
TextData ntext Texto da declaração Transact-SQL que causou a escalada das fechaduras. 1 Yes
TransactionID bigint ID atribuída pelo sistema da transação. 4 Yes
Type int Granularidade da escalonada dos bloqueios:

1=NULL_RESOURCE

2=BASE DE DADOS

3=FICHEIRO

5=OBJECT (nível de tabela)

6=PÁGINA

7=KEY

8=EXTENSÃO

9=RID

10=APLICAÇÃO

11=METADADOS

12=HOBT

13=ALLOCATION_UNIT
57 Yes

Examples

O exemplo seguinte utiliza o sp_trace_create procedimento para criar um traço, usa sp_trace_setevent para adicionar colunas de escalonamento de bloqueio ao traço, e depois usa sp_trace_setstatus para iniciar o traço. Em instruções como EXEC sp_trace_setevent @TraceID, 60, 22, 1, o número 60 indica a classe de evento de escalada, 22 indica a coluna ObjectID e 1 define o evento de rastreio 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 rastreio está a correr, execute as instruções que quer rastrear. Quando terminarem, executa o código seguinte para parar e depois fecha o rastreio. Este exemplo usa a fn_trace_getinfo função para obter o traceid to ser usado nas sp_trace_setstatus sentenças.

-- 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  

Ver também

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