Classe de evento Lock:Escalation
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 de 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 da 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 |
image |
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 de 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 conectar-se ao SQL Server com Logon1 e executar uma instrução como Logon2, SessionLoginName mostrará Logon1 e LoginName mostrará 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 byusing 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