Compartilhar via


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 do processo do cliente.

9

Sim

DatabaseID

int

ID do banco de dados no qual o bloqueio foi adquirido. 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

Seqüência de um determinado evento na solicitação.

51

Não

GroupID

int

ID do grupo de carga de trabalho em que o evento de Rastreamento SQL é disparado.

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 do logon do usuário (logon de segurança do SQL Server ou credenciais de logon do Windows Microsoft na forma DOMÍNIO\nome_de_usuá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 de cada logon no servidor.

41

Sim

Mode

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 Exclusivo da Tentativa (LCK_M_SIX)

11=Atualizar com Exclusivo da Tentativa (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 exclusivo compartilhado (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

Domínio do Windows ao qual o usuário pertence.

7

Sim

NTUserName

nvarchar

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

Offset

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, se você se conectar com o SQL Server usando o Login1 e executar uma instrução como Login2, o SessionLoginName mostrará o Login1 e o LoginName mostrará o Login2. Essa coluna exibe logons do SQL Server e do Windows.

64

Sim

SPID

int

ID da sessão em que o evento ocorreu.

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

Type

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