Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Azure SQL Database
AzureSQL Managed Instance
SQL 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)