ZESTAW DEADLOCK_PRIORITY (Transact-SQL)

Określa względną ważnością bieżącej sesja kontynuować przetwarzanie, jeśli jest zakleszczony z innej sesja.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH | <numeric-priority> | @deadlock_var | @deadlock_intvar }

<numeric-priority> ::= { -10 | -9 | -8 | … | 0 | … | 8 | 9 | 10 }

Argumenty

  • NISKI
    Określa, że w bieżącej sesja będzie ofiara zakleszczenie , jeśli jest zaangażowany w zakleszczenie i inne sesje, które są zaangażowane w łańcuchu zakleszczenie zakleszczenie priorytet zestaw normalny lub wysokiej lub wartość całkowitą większą niż -5.W bieżącej sesja nie będzie ofiara zakleszczenie , jeśli inne sesje zakleszczenie priorytet zestaw na wartość całkowitą mniejszą niż -5.Określa również, że bieżąca sesja jest kwalifikują się ofiara zakleszczenie , jeśli inna sesja ma zestaw zakleszczenie priorytet zestaw niski lub wartość całkowitą równą -5.

  • NORMALNY
    Określa bieżącą sesja będzie ofiara zakleszczenie innych sesji, które są zaangażowane w łańcuchu zakleszczenie zakleszczenie priorytet zestaw na wysoki lub być całkowitą większą niż 0, ale nie będzie ofiara zakleszczenie , jeśli inne sesje zakleszczenie priorytet zestaw niski lub wartość całkowitą mniejszą niż 0.Również określa, że bieżąca sesja jest kwalifikują się ofiara zakleszczenie , jeśli inny innych sesja ma zestawpriorytetzakleszczenie normalny lub wartość całkowitą równą 0. NORMALNY jest domyślny priorytet.

  • WYSOKA
    Określa, że bieżąca sesja będzie ofiara zakleszczenie , jeśli inne sesje, które są zaangażowane w łańcuchu zakleszczenie zakleszczenie priorytet zestaw na wartość całkowitą większą niż 5 lub kwalifikuje się być ofiara zakleszczenie , jeśli inna sesja ma również zestawpriorytetzakleszczenie wysokiej lub wartość całkowitą równą 5.

  • <priorytet numeryczne>
    To liczba całkowita wartość zakres (-10-10) do 21 poziom priorytetu zakleszczenie .Określa bieżącą sesja będzie ofiara zakleszczenie innych sesji w łańcuchu zakleszczenie działających na wyższą wartość priorytetu zakleszczenie , ale nie będzie ofiara zakleszczenie , korzystający z innych sesji na wartość priorytetu zakleszczenie niższa niż wartość bieżącej sesja.Określa również, że bieżąca sesja jest kwalifikują się ofiara zakleszczenie , jeśli działa innej sesja z wartością priorytetu zakleszczenie , który jest taki sam jak w bieżącej sesja.NISKI mapuje -5, normalny, wysoki 5 i 0.

  • **@**deadlock_var
    To zmienna znak określający priorytet zakleszczenie .Zmienna musi być zestaw na wartość "Niski", "Normalny" lub "Wysoki".Zmienna musi być wystarczająco duża, aby pomieścić cały ciąg.

  • **@**deadlock_intvar
    To zmienna typu Liczba całkowita określająca priorytet zakleszczenie .Zmienna musi być zestaw na wartość całkowitą z zakres (-10-10).

Uwagi

Zakleszczenia powstają, gdy dwie sesje są zarówno oczekiwanie na dostęp do zasobów zablokowany przez inną.Gdy wystąpienie SQL Server wykryje, że dwie sesje są zakleszczone, rozwiązuje zakleszczenie , wybierając jedną z sesji jako ofiara zakleszczenie .Bieżąca transakcja ofiary jest przywracana i komunikat o błędzie zakleszczenie 1205 jest zwracana do klient.Zwolnienie wszystkich blokad tej sesja, zezwalając innej sesja kontynuować.

Które sesja jest wybrany jako ofiara zakleszczenie zależy od każdej sesjaużytkownika zakleszczenie priorytet:

  • Jeśli zarówno sesje mają ten sam priorytet zakleszczenie wystąpienie SQL Server wybiera sesja jest tańsza wycofać jako ofiara zakleszczenie .Na przykład jeżeli zarówno sesje zestaw ich priorytet zakleszczenie wysoki, wystąpienie będzie wybierz jako ofiarą sesja , którą on szacunków jest mniej kosztowne wycofać.

  • Jeśli sesje priorytetów różnych zakleszczenie , sesja o najniższym priorytecie zakleszczenie jest wybrany jako ofiara zakleszczenie .

Ustaw DEADLOCK_PRIORITY jest zestaw na wykonać lub czas jednostkowy i nie analizować czas.

Uprawnienia

Wymaga członkostwa w public rolę.

Przykłady

W poniższym przykładzie użyto zmiennej, aby zestaw priorytet zakleszczenie LOW.

DECLARE @deadlock_var NCHAR(3);
SET @deadlock_var = N'LOW';

SET DEADLOCK_PRIORITY @deadlock_var;
GO

Poniższy przykład Ustawia priorytet zakleszczenie na NORMAL.

SET DEADLOCK_PRIORITY NORMAL;
GO