Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego ustawienie SET DEADLOCK_PRIORITY HIGH programu SQL Server miałoby nie być honorowane?

Wygląda na to, że polecenie, które jest zabijane, jest FUNKCJĄ ALTER PARTITION, warto zauważyć, że wymaga to blokady SCH-M, która jest niekompatybilna z blokadami SCH-S, które są brane za wszystko. Myślę, że to może być przyczyna.

Zobacz michaeljswart.com/2013/04/the-sch -m-lock-jest-zły .

Zobacz także ten opis zakleszczenia SCH-M z funkcji ALTER PARTITION i zapytania, które powoduje aktualizację statystyk w SQL 2014 i 2016, ale może również w 2012 r.:Zakleszczenie Występuje po nabyciu zamek SCH-M

Patrząc na Twój wykres, jeden proces ma wspólną (aktualizacyjną) blokadę na sysschobjs i czeka na blokadę SCH-S na Twoim stole. Twój proces ma blokadę SCH-M na twoim stole i czeka na blokadę X na sysschobjs. sysschobjs to systemowa tabela bazowa, która znajduje się za sysobjects. Zobacz dyskusję tutaj Technet:Zapytanie SQL, które często powoduje zakleszczenie

Mam nadzieję, że to pomoże




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodaj unikalne ograniczenie do kombinacji dwóch kolumn

  2. SQL Server 2012:rozbieżności DATETIME między wstawkami a wyzwalaczami

  3. Jak wstawić wartości do kolumny IDENTITY w SQL Server

  4. Dodawanie milisekund do DateTime w TSQL INSERT INTO

  5. Uruchom wszystkie pliki SQL w katalogu