sql >> Database >  >> RDS >> Sqlserver

Waarom zou de SET DEADLOCK_PRIORITY HIGH van SQL Server niet worden gerespecteerd?

Het lijkt erop dat het commando dat wordt gedood een ALTER PARTITION FUNCTIE is, het is interessant om op te merken dat dit een SCH-M-slot vereist dat niet compatibel is met SCH-S-sloten die voor alles worden gebruikt. Ik denk dat dit een oorzaak kan zijn.

Zie michaeljswart.com/2013/04/the-sch -m-lock-is-evil .

Zie ook deze beschrijving van een SCH-M-deadlock van een ALTER PARTITION-functie en een query die een statistische update in SQL 2014 &2016 veroorzaakt, maar misschien ook waar in 2012:Deadlock treedt op wanneer u aanschaft een SCH-M slot

Als je naar je grafiek kijkt, heeft één proces een gedeeld (update) slot op sysschobjs en wacht het op een SCH-S-slot op je tafel. Uw proces heeft een SCH-M-vergrendeling op uw tafel en wacht op een X-vergrendeling op sysschobjs. sysschobjs is een systeembasistabel die zich achter sysobjects bevindt. Bekijk de discussie hier Technet:SQL-query die vaak een deadlock veroorzaakt

Ik hoop dat dit helpt




  1. Bungelende transacties in MySQL Innodb

  2. Dynamisch SQL-draaitabel

  3. Hoe UNHEX() werkt in MariaDB

  4. Oracle-geparametriseerde query in c#