Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (alleen serverloze SQL-pool)
Hiermee geeft u het relatieve belang op dat de huidige sessie blijft verwerken als deze is vastgelopen met een andere sessie.
              
              
              Transact-SQL syntaxis-conventies
Syntax
SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH | <numeric-priority> | @deadlock_var | @deadlock_intvar }
  
<numeric-priority> ::= { -10 | -9 | -8 | ... | 0 | ... | 8 | 9 | 10 }
Arguments
LOW
Hiermee geeft u op dat de huidige sessie het slachtoffer van de impasse is als het betrokken is bij een impasse en andere sessies die betrokken zijn bij de impasseketen, de prioriteit impasse hebben ingesteld op NORMAAL of HOOG of op een geheel getal dat groter is dan -5. De huidige sessie is niet het impasseslachtoffer als de andere sessies een impasseprioriteit hebben ingesteld op een geheel getal dat kleiner is dan -5. Het geeft ook aan dat de huidige sessie in aanmerking komt voor het slachtoffer van de impasse als een andere sessie een impasseprioriteit heeft ingesteld op LAAG of op een geheel getal dat gelijk is aan -5.
NORMAL
Hiermee geeft u op dat de huidige sessie het impasseslachtoffer is als andere sessies die betrokken zijn bij de impasseketen een impasseprioriteit hebben ingesteld op HOOG of op een geheel getal dat groter is dan 0, maar het slachtoffer van de impasse niet is als de andere sessies een impasseprioriteit hebben ingesteld op LAAG of op een geheel getal kleiner dan 0. Er wordt ook aangegeven dat de huidige sessie in aanmerking komt voor het slachtoffer van de impasse als een andere sessie de prioriteit van een impasse heeft ingesteld op NORMAL of op een geheel getal dat gelijk is aan 0. NORMAL is de standaardprioriteit.
HIGH
Hiermee geeft u op dat de huidige sessie het slachtoffer van de impasse is als andere sessies die betrokken zijn bij de impasseketen een impasseprioriteit hebben ingesteld op een geheel getal dat groter is dan 5, of in aanmerking komt voor het slachtoffer van de impasse als een andere sessie ook de prioriteit van de impasse heeft ingesteld op HOOG of op een geheel getal dat gelijk is aan 5.
<numerieke prioriteit>
Is een geheel getalwaardebereik (-10 tot 10) om 21 niveaus van impasseprioriteit te bieden. Hiermee wordt aangegeven dat de huidige sessie het impasseslachtoffer is als andere sessies in de impasseketen worden uitgevoerd met een hogere prioriteitswaarde voor impasses, maar niet het impasseslachtoffer zijn als de andere sessies worden uitgevoerd met een waarde voor impasseprioriteit lager dan de waarde van de huidige sessie. Het geeft ook aan dat de huidige sessie in aanmerking komt voor het impasse-slachtoffer als een andere sessie wordt uitgevoerd met een prioriteitswaarde voor impasses die hetzelfde is als de huidige sessie. LOW wordt toegewezen aan -5, NORMAL to 0 en HIGH tot 5.
@ deadlock_var
Is een tekenvariabele die de prioriteit van de impasse aangeeft. De variabele moet worden ingesteld op de waarde 'LAAG', 'NORMAAL' of 'HOOG'. De variabele moet groot genoeg zijn om de hele tekenreeks vast te houden.
@ deadlock_intvar
Is een geheel getalvariabele die de prioriteit van de impasse aangeeft. De variabele moet worden ingesteld op een geheel getal in het bereik (-10 op 10).
Remarks
Er treden impasses op wanneer twee sessies beide wachten op toegang tot resources die door de andere zijn vergrendeld. Wanneer een exemplaar van SQL Server detecteert dat twee sessies zijn vastgelopen, wordt de impasse opgelost door een van de sessies te kiezen als een impasseslachtoffer. De huidige transactie van het slachtoffer wordt teruggedraaid en impassefout 1205 wordt geretourneerd aan de client. Hiermee worden alle vergrendelingen van die sessie vrijgegeven, zodat de andere sessie kan worden voortgezet.
Welke sessie wordt gekozen als het impasseslachtoffer is afhankelijk van de prioriteit van elke sessie impasse:
Als beide sessies dezelfde impasseprioriteit hebben, kiest het exemplaar van SQL Server de sessie die minder duur is om terug te draaien als het impasseslachtoffer. Als beide sessies bijvoorbeeld hun impasseprioriteit hebben ingesteld op HOOG, wordt het exemplaar gekozen als slachtoffer van de sessie die het geschatte minder kostbaar is om terug te draaien. De kosten worden bepaald door het aantal logboekbytes te vergelijken, dat tot dat moment in elke transactie is geschreven. (U kunt deze waarde zien als 'Logboek gebruikt' in een impassegrafiek).
Als de sessies verschillende impasseprioriteiten hebben, wordt de sessie met de laagste impasseprioriteit gekozen als het impasseslachtoffer.
SET-DEADLOCK_PRIORITY wordt ingesteld tijdens uitvoering of uitvoeringstijd en niet op parseringstijd.
Deze syntaxis wordt niet ondersteund in toegewezen SQL-pools in Azure Synapse Analytics. Het wordt ondersteund in serverloze SQL-pools in Azure Synapse Analytics.
Permissions
Vereist lidmaatschap van de openbare rol.
Examples
In het volgende voorbeeld wordt een variabele gebruikt om de prioriteit van de impasse in te stellen op LOW.
DECLARE @deadlock_var NCHAR(3);
SET @deadlock_var = N'LOW';
  
SET DEADLOCK_PRIORITY @deadlock_var;
GO
In het volgende voorbeeld wordt de prioriteit van de impasse ingesteld op NORMAL.
SET DEADLOCK_PRIORITY NORMAL;
GO