Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (serverless SQL pool only)
Baza danych SQL w Microsoft Fabric
Określa względne znaczenie, że bieżąca sesja kontynuuje przetwarzanie, jeśli jest zakleszczone z inną sesją.
Transact-SQL konwencje składni
Syntax
SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH | <numeric-priority> | @deadlock_var | @deadlock_intvar }
<numeric-priority> ::= { -10 | -9 | -8 | ... | 0 | ... | 8 | 9 | 10 }
Arguments
LOW
Określa, że bieżąca sesja będzie ofiarą zakleszczenia, jeśli jest zaangażowana w impas, a inne sesje biorące udział w łańcuchu zakleszczenia mają priorytet zakleszczenia ustawiony na WARTOŚĆ NORMAL lub HIGH lub do wartości całkowitej większej niż -5. Bieżąca sesja nie będzie ofiarą zakleszczenia, jeśli inne sesje mają priorytet zakleszczenia ustawiony na wartość całkowitą mniejszą niż -5. Określa również, że bieżąca sesja kwalifikuje się do ofiary zakleszczenia, jeśli kolejna sesja ustawiła priorytet zakleszczenia ustawiony na LOW lub na wartość całkowitą równą -5.
NORMAL
Określa, że bieżąca sesja będzie ofiarą zakleszczenia, jeśli inne sesje biorące udział w łańcuchu zakleszczenia mają priorytet zakleszczenia ustawiony na WARTOŚĆ HIGH lub do wartości całkowitej większej niż 0, ale nie będzie ofiarą zakleszczenia, jeśli inne sesje mają priorytet zakleszczenia ustawiony na LOW lub do wartości całkowitej mniejszej niż 0. Określa również, że bieżąca sesja kwalifikuje się do ofiary zakleszczenia, jeśli inna sesja ustawi priorytet zakleszczenia na NORMAL lub na wartość całkowitą równą 0. NORMALNY jest domyślnym priorytetem.
HIGH
Określa, że bieżąca sesja będzie ofiarą zakleszczenia, jeśli inne sesje biorące udział w łańcuchu zakleszczenia mają priorytet zakleszczenia ustawiony na wartość całkowitą większą niż 5, lub kwalifikuje się do zakleszczenia ofiary, jeśli inna sesja również ustawi priorytet zakleszczenia na WYSOKI lub do wartości całkowitej równej 5.
<priorytet liczbowy>
Jest zakresem wartości całkowitych (-10 do 10), aby zapewnić 21 poziomów priorytetu zakleszczenia. Określa, że bieżąca sesja będzie ofiarą zakleszczenia, jeśli inne sesje w łańcuchu zakleszczenia działają z wyższą wartością priorytetu zakleszczenia, ale nie będzie ofiarą zakleszczenia, jeśli inne sesje są uruchomione przy wartości priorytetu zakleszczenia niższe niż wartość bieżącej sesji. Określa również, że bieżąca sesja kwalifikuje się do zakleszczenia ofiary, jeśli inna sesja jest uruchomiona z wartością priorytetu zakleszczenia, która jest taka sama jak bieżąca sesja. NISKIE mapuje na -5, NORMALNY do 0 i WYSOKI do 5.
@ deadlock_var
Jest zmienną znakową określającą priorytet zakleszczenia. Zmienna musi być ustawiona na wartość "LOW", "NORMAL" lub "HIGH". Zmienna musi być wystarczająco duża, aby przechowywać cały ciąg.
@ deadlock_intvar
Jest zmienną całkowitą określającą priorytet zakleszczenia. Zmienna musi być ustawiona na wartość całkowitą w zakresie (-10 na 10).
Remarks
Zakleszczenia pojawiają się, gdy dwie sesje czekają na dostęp do zasobów zablokowanych przez drugą. Gdy wystąpienie programu SQL Server wykryje, że dwie sesje są zakleszczone, rozwiązuje impas, wybierając jedną z sesji jako ofiarę zakleszczenia. Bieżąca transakcja ofiary jest cofana i komunikat o błędzie zakleszczenia 1205 jest zwracany do klienta. Spowoduje to wydanie wszystkich blokad przechowywanych przez tę sesję, co umożliwi kontynuowanie drugiej sesji.
Która sesja jest wybierana jako ofiara zakleszczenia zależy od priorytetu zakleszczenia każdej sesji:
Jeśli obie sesje mają taki sam priorytet zakleszczenia, wystąpienie programu SQL Server wybiera sesję, która jest tańsza, aby wycofać się jako ofiara zakleszczenia. Jeśli na przykład obie sesje ustawiły priorytet zakleszczenia na WYSOKI, wystąpienie wybierze jako ofiarę sesji, która szacuje, jest mniej kosztowna, aby wycofać. Koszt jest określany przez porównanie liczby bajtów dziennika zapisanych w tym punkcie w każdej transakcji. (Ta wartość jest widoczna jako "Używany dziennik" na wykresie zakleszczenia).
Jeśli sesje mają różne priorytety zakleszczenia, sesja z najniższym priorytetem zakleszczenia zostanie wybrana jako ofiara zakleszczenia.
ZESTAW DEADLOCK_PRIORITY jest ustawiany w czasie wykonywania lub wykonywania, a nie w czasie analizy.
Ta składnia nie jest obsługiwana w dedykowanych pulach SQL w usłudze Azure Synapse Analytics. Jest ona obsługiwana w bezserwerowych pulach SQL w usłudze Azure Synapse Analytics.
Permissions
Wymaga członkostwa w publicznej roli .
Examples
W poniższym przykładzie użyto zmiennej w celu ustawienia priorytetu zakleszczenia na LOWwartość .
DECLARE @deadlock_var NCHAR(3);
SET @deadlock_var = N'LOW';
SET DEADLOCK_PRIORITY @deadlock_var;
GO
W poniższym przykładzie ustawiono priorytet zakleszczenia na NORMALwartość .
SET DEADLOCK_PRIORITY NORMAL;
GO