Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi SET DEADLOCK_PRIORITY HIGH de SQL Server ne serait-il pas honoré ?

Il semble que la commande qui est tuée soit une FONCTION ALTER PARTITION, il est intéressant de noter que cela nécessite un verrou SCH-M qui est incompatible avec les verrous SCH-S qui sont pris pour tout. Je suppose que cela peut être une cause.

Voir michaeljswart.com/2013/04/the-sch -m-lock-est-mal .

Voir également cette description d'un interblocage SCH-M d'une fonction ALTER PARTITION et d'une requête qui provoque une mise à jour des statistiques dans SQL 2014 et 2016, mais peut-être également vrai en 2012 :L'impasse se produit lorsque vous acquérez une serrure SCH-M

En regardant votre graphique, un processus a un verrou partagé (mise à jour) sur sysschobjs et attend un verrou SCH-S sur votre table. Votre processus a un verrou SCH-M sur votre table et attend un verrou X sur sysschobjs. sysschobjs est une table de base système qui se trouve derrière sysobjects. Voir la discussion ici Technet :requête SQL qui provoque souvent des blocages

J'espère que cela vous aidera