Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (serverless SQL pool only)
SQL databáze v Microsoft Fabric
Určuje relativní důležitost, kterou aktuální relace pokračuje ve zpracování, pokud je zablokovaná s jinou relací.
Syntax
SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH | <numeric-priority> | @deadlock_var | @deadlock_intvar }
<numeric-priority> ::= { -10 | -9 | -8 | ... | 0 | ... | 8 | 9 | 10 }
Arguments
LOW
Určuje, že aktuální relace bude obětí vzájemného zablokování, pokud je zapojena do vzájemného zablokování a jiné relace zapojené do řetězu vzájemného zablokování mají prioritu vzájemného zablokování nastavenou na HODNOTU NORMAL nebo HIGH nebo na celočíselnou hodnotu větší než -5. Aktuální relace nebude obětí vzájemného zablokování, pokud ostatní relace mají prioritu vzájemného zablokování nastavenou na celočíselnou hodnotu menší než -5. Určuje také, že aktuální relace může být obětí vzájemného zablokování, pokud jiná relace nastavila prioritu vzájemného zablokování nastavenou na HODNOTU LOW nebo na celočíselnou hodnotu rovnající se hodnotě -5.
NORMAL
Určuje, že aktuální relace bude obětí vzájemného zablokování, pokud jiné relace zapojené do řetězu vzájemného zablokování mají nastavenou prioritu vzájemného zablokování nastavenou na HODNOTU HIGH nebo na celočíselnou hodnotu větší než 0, ale nebude obětí vzájemného zablokování, pokud ostatní relace mají prioritu vzájemného zablokování nastavenou na LOW nebo na celočíselnou hodnotu menší než 0. Určuje také, že aktuální relace může být obětí vzájemného zablokování, pokud jiná relace nastavila prioritu vzájemného zablokování na HODNOTU NORMAL nebo na celočíselnou hodnotu rovnající se 0. Normal je výchozí priorita.
HIGH
Určuje, že aktuální relace bude obětí vzájemného zablokování, pokud jiné relace zapojené do řetězu vzájemného zablokování mají nastavenou prioritu vzájemného zablokování nastavenou na celočíselnou hodnotu větší než 5, nebo je oprávněna být obětí vzájemného zablokování, pokud jiná relace také nastavila prioritu vzájemného zablokování na HODNOTU HIGH nebo na celočíselnou hodnotu rovnající se 5.
<číselná priorita>
Je celočíselná oblast hodnot (-10 až 10), která poskytuje 21 úrovní priority vzájemného zablokování. Určuje, že aktuální relace bude obětí vzájemného zablokování, pokud ostatní relace v řetězci vzájemného zablokování běží s vyšší hodnotou priority vzájemného zablokování, ale nebude obětí vzájemného zablokování, pokud ostatní relace běží na hodnotě priority vzájemného zablokování nižší než hodnota aktuální relace. Určuje také, že aktuální relace může být obětí vzájemného zablokování, pokud je spuštěná jiná relace s hodnotou priority vzájemného zablokování, která je stejná jako aktuální relace. LOW mapuje na -5, NORMAL až 0 a HIGH až 5.
@ deadlock_var
Je znaková proměnná určující prioritu vzájemného zablokování. Proměnná musí být nastavená na hodnotu LOW, NORMAL nebo HIGH. Proměnná musí být dostatečně velká, aby držela celý řetězec.
@ deadlock_intvar
Je celočíselná proměnná určující prioritu vzájemného zablokování. Proměnná musí být nastavena na celočíselnou hodnotu v rozsahu (-10 až 10).
Remarks
Vzájemné zablokování vzniká, když obě relace čekají na přístup k prostředkům uzamčeným druhým. Když instance SQL Serveru zjistí, že jsou dvě relace zablokované, vyřeší zablokování výběrem jedné z relací jako oběti vzájemného zablokování. Aktuální transakce oběti je vrácena zpět a chybová zpráva 1205 je vrácena klientovi. Tím se uvolní všechny zámky, které tato relace uchovává, což umožní pokračování druhé relace.
Která relace je zvolena jako oběť vzájemného zablokování, závisí na prioritě vzájemného zablokování každé relace:
Pokud mají obě relace stejnou prioritu vzájemného zablokování, instance SQL Serveru zvolí relaci, která je levnější, aby se vrátila zpět jako oběť vzájemného zablokování. Pokud například obě relace nastavily prioritu vzájemného zablokování na HODNOTU HIGH, instance zvolí jako oběť relaci, která odhadne, je méně nákladná, aby se vrátila zpět. Náklady jsou určeny porovnáním počtu bajtů protokolu zapsaných k bodě každé transakce. (Tuto hodnotu můžete zobrazit jako log used (Log Used) v grafu vzájemného zablokování.
Pokud mají relace různé priority vzájemného zablokování, relace s nejnižší prioritou vzájemného zablokování se vybere jako oběť vzájemného zablokování.
SET DEADLOCK_PRIORITY je nastavena při spuštění nebo spuštění, a ne v době analýzy.
Tato syntaxe se ve vyhrazených fondech SQL ve službě Azure Synapse Analytics nepodporuje. Podporuje se v bezserverových fondech SQL ve službě Azure Synapse Analytics.
Permissions
Vyžaduje členství ve veřejné roli .
Examples
Následující příklad používá proměnnou k nastavení priority vzájemného zablokování na LOW.
DECLARE @deadlock_var NCHAR(3);
SET @deadlock_var = N'LOW';
SET DEADLOCK_PRIORITY @deadlock_var;
GO
Následující příklad nastaví prioritu vzájemného zablokování na NORMAL.
SET DEADLOCK_PRIORITY NORMAL;
GO