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)