Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (apenas pool SQL serverless)
Base de dados SQL no Microsoft Fabric
Especifica a importância relativa de que a sessão atual continue processando se estiver bloqueada com outra sessão.
Transact-SQL convenções de sintaxe
Syntax
SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH | <numeric-priority> | @deadlock_var | @deadlock_intvar }
<numeric-priority> ::= { -10 | -9 | -8 | ... | 0 | ... | 8 | 9 | 10 }
Arguments
LOW
Especifica que a sessão atual será a vítima de deadlock se estiver envolvida em um deadlock e outras sessões envolvidas na cadeia de deadlock tiverem prioridade de deadlock definida como NORMAL ou HIGH ou para um valor inteiro maior que -5. A sessão atual não será a vítima de bloqueio se as outras sessões tiverem prioridade de bloqueio definida para um valor inteiro inferior a -5. Ele também especifica que a sessão atual é qualificada para ser a vítima de deadlock se outra sessão tiver definido prioridade de deadlock definida como LOW ou para um valor inteiro igual a -5.
NORMAL
Especifica que a sessão atual será a vítima de deadlock se outras sessões envolvidas na cadeia de deadlock tiverem prioridade de deadlock definida como HIGH ou para um valor inteiro maior que 0, mas não será a vítima de deadlock se as outras sessões tiverem prioridade de deadlock definida como LOW ou para um valor inteiro menor que 0. Ele também especifica que a sessão atual é qualificada para ser a vítima de deadlock se outra sessão tiver definido a prioridade de deadlock como NORMAL ou para um valor inteiro igual a 0. NORMAL é a prioridade padrão.
HIGH
Especifica que a sessão atual será a vítima de deadlock se outras sessões envolvidas na cadeia de deadlock tiverem prioridade de deadlock definida como um valor inteiro maior que 5, ou é elegível para ser a vítima de deadlock se outra sessão também tiver definido prioridade de deadlock como HIGH ou para um valor inteiro igual a 5.
<prioridade numérica>
É um intervalo de valores inteiros (-10 a 10) para fornecer 21 níveis de prioridade de deadlock. Ele especifica que a sessão atual será a vítima de deadlock se outras sessões na cadeia de deadlock estiverem sendo executadas com um valor de prioridade de deadlock mais alto, mas não será a vítima de deadlock se as outras sessões estiverem sendo executadas com um valor de prioridade de deadlock menor do que o valor da sessão atual. Ele também especifica que a sessão atual é qualificada para ser a vítima de deadlock se outra sessão estiver sendo executada com um valor de prioridade de deadlock igual ao da sessão atual. LOW mapeia para -5, NORMAL para 0 e HIGH para 5.
@ deadlock_var
É uma variável de caractere que especifica a prioridade de deadlock. A variável deve ser definida como um valor de 'LOW', 'NORMAL' ou 'HIGH'. A variável deve ser grande o suficiente para conter a cadeia de caracteres inteira.
@ deadlock_intvar
É uma variável inteira que especifica a prioridade de deadlock. A variável deve ser definida como um valor inteiro no intervalo (-10 a 10).
Remarks
Os impasses surgem quando duas sessões aguardam o acesso a recursos bloqueados pela outra. Quando uma instância do SQL Server deteta que duas sessões estão bloqueadas, ela resolve o impasse escolhendo uma das sessões como vítima de deadlock. A transação atual da vítima é revertida e a mensagem de erro de deadlock 1205 é retornada ao cliente. Isso libera todos os bloqueios mantidos por essa sessão, permitindo que a outra sessão prossiga.
A sessão escolhida como vítima de deadlock depende da prioridade de deadlock de cada sessão:
Se ambas as sessões tiverem a mesma prioridade de deadlock, a instância do SQL Server escolhe a sessão que é menos dispendiosa para reverter como vítima de deadlock. Por exemplo, se ambas as sessões tiverem definido sua prioridade de bloqueio como HIGH, a instância escolherá como vítima a sessão que estima ser menos dispendiosa para reverter. O custo é determinado comparando o número de bytes de log gravados até esse ponto em cada transação. (Você pode ver esse valor como "Log usado" em um gráfico de deadlock).
Se as sessões tiverem prioridades de bloqueio diferentes, a sessão com a prioridade de bloqueio mais baixa é escolhida como a vítima do impasse.
SET DEADLOCK_PRIORITY é definido em tempo de execução ou execução e não em tempo de análise.
Essa sintaxe não é suportada em pools SQL dedicados no Azure Synapse Analytics. Ele é suportado em pools SQL sem servidor no Azure Synapse Analytics.
Permissions
Requer adesão à função pública de .
Examples
O exemplo a seguir usa uma variável para definir a prioridade de deadlock como LOW.
DECLARE @deadlock_var NCHAR(3);
SET @deadlock_var = N'LOW';
SET DEADLOCK_PRIORITY @deadlock_var;
GO
O exemplo a seguir define a prioridade de deadlock como NORMAL.
SET DEADLOCK_PRIORITY NORMAL;
GO