Megosztás a következőn keresztül:


SET DEADLOCK_PRIORITY (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (serverless SQL pool only)SQL adatbázis a Microsoft Fabric-ben

Megadja az aktuális munkamenet feldolgozásának relatív fontosságát, ha az holtponton van egy másik munkamenettel.

Transact-SQL szintaxis konvenciók

Syntax

SET DEADLOCK_PRIORITY { LOW | NORMAL | HIGH | <numeric-priority> | @deadlock_var | @deadlock_intvar }
  
<numeric-priority> ::= { -10 | -9 | -8 | ... | 0 | ... | 8 | 9 | 10 }

Arguments

LOW

Megadja, hogy az aktuális munkamenet holtpont áldozata legyen, ha holtpontban van, és a holtpontláncban részt vevő egyéb munkamenetek holtpont prioritása NORMÁL vagy MAGAS vagy -5-nél nagyobb egész számra van beállítva. Az aktuális munkamenet nem lesz holtpont áldozata, ha a többi munkamenet holtpont prioritása -5-nél kisebb egész számra van beállítva. Azt is megadja, hogy az aktuális munkamenet jogosult a holtpont áldozatává, ha egy másik munkamenet a holtpont prioritását LOW értékre vagy -5-nek megfelelő egész számra állította be.

NORMAL

Azt adja meg, hogy az aktuális munkamenet lesz a holtpont áldozata, ha a holtpontlánc más munkameneteinél a holtpont prioritása MAGAS vagy 0-nál nagyobb egész számra van beállítva, de nem lesz holtpont áldozata, ha a többi munkamenet holtpont prioritása ALACSONY vagy 0-nál kisebb egész számra van beállítva. Azt is megadja, hogy az aktuális munkamenet jogosult a holtpont áldozatává, ha egy másik munkamenet a holtpont prioritását NORMÁL értékre vagy 0-nak megfelelő egész számra állítja be. A NORMAL az alapértelmezett prioritás.

HIGH

Azt adja meg, hogy az aktuális munkamenet lesz a holtpont áldozata, ha a holtpontláncban részt vevő más munkamenetek holtpont prioritása 5-nél nagyobb egész számra van beállítva, vagy jogosult a holtpont áldozatává, ha egy másik munkamenet a holtpont prioritását IS MAGAS értékre vagy 5-nek megfelelő egész számra állította be.

<numerikus prioritás>

Egy egész szám (-10–10) értéktartomány, amely 21 holtpont prioritási szintet biztosít. Azt határozza meg, hogy az aktuális munkamenet lesz a holtpont áldozata, ha a holtpontlánc többi munkamenete magasabb holtpont prioritási értéken fut, de nem lesz holtpont áldozata, ha a többi munkamenet az aktuális munkamenet értékénél alacsonyabb holtpont prioritási értékkel fut. Azt is megadja, hogy az aktuális munkamenet jogosult a holtpont áldozatává, ha egy másik munkamenet holtpont prioritási értékkel fut, amely megegyezik az aktuális munkamenettel. A LOW -5, a NORMAL és a 0, valamint a HIGH–5 értékekre van leképezve.

@ deadlock_var

A holtpont prioritását meghatározó karakterváltozó. A változót "LOW", "NORMAL" vagy "HIGH" értékre kell állítani. A változónak elég nagynak kell lennie a teljes sztring tárolásához.

@ deadlock_intvar

A holtpont prioritását meghatározó egész szám változó. A változót a tartomány egész számának (-10 10-nek) kell beállítania.

Remarks

Holtpontok akkor fordulnak elő, ha két munkamenet várja a másik által zárolt erőforrásokhoz való hozzáférést. Amikor az SQL Server egy példánya észleli, hogy két munkamenet holtponton van, a holtpontot úgy oldja fel, hogy az egyik munkamenetet holtpont-áldozatként választja ki. A rendszer visszaállítja az áldozat aktuális tranzakcióját, és az 1205-ös holtpont hibaüzenetet adja vissza az ügyfélnek. Ez felszabadítja az adott munkamenet által tárolt összes zárolást, így a másik munkamenet folytathatja a műveletet.

A holtpont áldozataként választott munkamenet az egyes munkamenetek holtpont prioritásától függ:

  • Ha mindkét munkamenet azonos holtpont-prioritással rendelkezik, az SQL Server példánya azt a munkamenetet választja ki, amely kevésbé költséges a holtpont áldozataként való visszaállításhoz. Ha például mindkét munkamenet MAGAS értékűre állítja a holtpont prioritását, a példány áldozatként választja ki azt a munkamenetet, amelyet becslése szerint kevésbé költséges visszadobni. A költségeket az egyes tranzakciók adott pontjára írt naplóbájtok számának összehasonlítása határozza meg. (Ezt az értéket holtpontdiagramon "Napló használt" értékként tekintheti meg).

  • Ha a munkamenetek eltérő holtpont-prioritással rendelkeznek, a legalacsonyabb holtpont prioritású munkamenet lesz a holtpont áldozata.

A SET DEADLOCK_PRIORITY végrehajtáskor vagy futtatáskor van beállítva, és nem elemzési időpontban.

Ez a szintaxis az Azure Synapse Analytics dedikált SQL-készleteiben nem támogatott. Az Azure Synapse Analytics kiszolgáló nélküli SQL-készleteiben is támogatott.

Permissions

A nyilvános szerepkör tagságát igényli.

Examples

Az alábbi példa egy változót használ a holtpont prioritásának beállításához LOW.

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

Az alábbi példa a holtpont prioritását állítja be .NORMAL

SET DEADLOCK_PRIORITY NORMAL;
GO

Következő lépések