Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Por que o SET DEADLOCK_PRIORITY HIGH do SQL Server não seria respeitado?


Parece que o comando que está sendo morto é uma FUNÇÃO ALTER PARTITION, é interessante notar que isso requer um bloqueio SCH-M que é incompatível com bloqueios SCH-S que são usados ​​para tudo. Acho que isso pode ser uma causa.

Consulte michaeljswart.com/2013/04/the-sch -m-lock-is-mal .

Veja também esta descrição de um impasse SCH-M de uma função ALTER PARTITION e uma consulta que causa uma atualização de estatísticas no SQL 2014 e 2016, mas talvez seja verdade também em 2012:Deadlock ocorre quando você adquire um bloqueio SCH-M

Observando seu gráfico, um processo tem um bloqueio compartilhado (atualização) em sysschobjs e está aguardando um bloqueio SCH-S em sua tabela. Seu processo tem um bloqueio SCH-M em sua tabela e está aguardando um bloqueio X em sysschobjs. sysschobjs é uma tabela base do sistema que fica atrás de sysobjects. Veja a discussão aqui Technet:Consulta SQL que causa deadlock com frequência

Espero que isto ajude