SET DEADLOCK_PRIORITY (Transact-SQL)

Określa względną ważnością, że bieżąca sesja kontynuować przetwarzanie, jeśli jest zakleszczony z inną sesją.

Topic link iconKonwencje składni języka Transact-SQL

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

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

Argumenty

  • NISKA
    Określa, że w bieżącej sesja będzie ofiara zakleszczenie, jeśli jest zaangażowany w zakleszczenie i innych sesja biorących udział w łańcuchu zakleszczenie mają priorytet zakleszczenie zestaw NORMAL lub wysokie lub wartość większą niż -5.W bieżącej sesja nie będzie ofiara zakleszczenie, jeśli inne sesje mają priorytet zakleszczenie zestaw do liczby całkowitej wartości mniejszej niż -5.Określa również, że bieżąca sesja jest kwalifikują się ofiara zakleszczenia, jeśli inna sesja ma zestaw zakleszczenie priorytet zestaw do LOW lub wartość równa -5.

  • NORMALNY
    Określa, że w bieżącej sesja zostanie ustawiony na wysoki lub wartość całkowitą większą niż 0 ofiara zakleszczenie, jeśli inne sesje biorących udział w łańcuchu zakleszczenie mają priorytet zakleszczenie, ale nie będzie ofiara zakleszczenie, jeśli inne sesje mają priorytet zakleszczenie LOW lub wartość całkowitą mniejszą niż 0.Określa również, że bieżąca sesja jest uprawniony do innego innych sesja ma być ofiara zakleszczenia zestaw zakleszczenie priorytet NORMAL lub wartość całkowitą równą 0.NORMAL jest domyślny priorytet.

  • WYSOKA
    Określa, że bieżąca sesja zostanie ofiara zakleszczenia, jeśli inne sesje biorących udział w łańcuchu zakleszczenia mają priorytet zakleszczenia zestaw lub są kwalifikowane jako ofiara zakleszczenia, jeśli inna sesja ma również do liczby całkowitej wartości większej niż 5 zestaw zakleszczenie priorytetu na wysoki lub wartość całkowitą równą 5.

  • <priorytet numeryczne>
    Jest zakres wartości całkowitych (-10-10) do 21 poziom priorytetu zakleszczenie.Określa, że bieżąca sesja będzie ofiara zakleszczenie na wyższą wartość priorytetu zakleszczenie korzystający z innych sesji w łańcuchu zakleszczenie, ale nie będzie ofiara zakleszczenie, korzystający z innych sesji na wartość priorytetu zakleszczenie niższa niż wartość w bieżącej sesji.Określa również, że bieżąca sesja jest kwalifikują się ofiara zakleszczenie, gdy jest uruchomiona inna sesja, z wartością pierwszeństwa zakleszczenie, który jest taki sam, jak w bieżącej sesji.LOW mapuje -5, NORMAL na 0, a wysokie do 5.

  • **@**deadlock_var
    Czy zmienna znak określający priorytet zakleszczenie.Zmienna musi być zestaw na wartość "LOW", "NORMAL" lub "Wysokie".Zmienna musi być wystarczająco duży, aby pomieścić cały ciąg.

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

Remarks

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

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

  • Jeśli zarówno sesje mają ten sam priorytet zakleszczenie, wystąpienie SQL Server Wybiera sesja, które jest tańsze wycofać jako ofiara zakleszczenie. Na przykład, jeśli mają zarówno sesje zestaw ich priorytet zakleszczenie na wysokie, wystąpienie wybierany ofiarą go szacuje sesja jest mniej kosztowne do przywrócenia.

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

zestaw DEADLOCK_PRIORITY jest ustawiony na wykonać lub uruchomić czas, a nie w czasie analizowania.

Uprawnienia

Członkostwo w grupie wymaga publiczne roli.

Przykłady

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

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

SET DEADLOCK_PRIORITY @deadlock_var;
GO

Poniższy przykład przedstawia priorytet zakleszczenie NORMAL.

SET DEADLOCK_PRIORITY NORMAL;
GO