SET DEADLOCK_PRIORITY (Transact-SQL)SET DEADLOCK_PRIORITY (Transact-SQL)

ESTE TEMA SE APLICA A:síSQL Server (a partir de 2008)síAzure SQL DatabasesíAzure SQL Data Warehouse síAlmacenamiento de datos paralelos THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Especifica la importancia relativa de que la sesión actual se siga procesando si existe un interbloqueo con otra sesión.Specifies the relative importance that the current session continue processing if it is deadlocked with another session.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax


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

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

ArgumentosArguments

LOWLOW
Especifica que la sesión actual será el sujeto de interbloqueo si está implicada en un interbloqueo y el resto de las sesiones implicadas en la cadena de interbloqueos tienen la prioridad de interbloqueo establecida en NORMAL o HIGH o en un valor entero mayor que -5.Specifies that the current session will be the deadlock victim if it is involved in a deadlock and other sessions involved in the deadlock chain have deadlock priority set to either NORMAL or HIGH or to an integer value greater than -5. La sesión actual no será la víctima del interbloqueo si las demás sesiones tienen el conjunto de prioridades de interbloqueo establecido en un valor entero menor que -5.The current session will not be the deadlock victim if the other sessions have deadlock priority set to an integer value less than -5. También especifica que la sesión actual puede ser víctima de interbloqueo si otra sesión tiene establecido un valor de prioridad de interbloqueo LOW o un valor entero igual a -5.It also specifies that the current session is eligible to be the deadlock victim if another session has set deadlock priority set to LOW or to an integer value equal to -5.

NORMALNORMAL
Especifica que la sesión actual será el sujeto de interbloqueo si otras sesiones implicadas en la cadena de interbloqueos tienen la prioridad de interbloqueo establecida en HIGH o en un valor entero mayor que 0, pero no serán el sujeto de interbloqueo si las demás sesiones tienen la prioridad de interbloqueo establecida en LOW o en un valor entero menor que 0.Specifies that the current session will be the deadlock victim if other sessions involved in the deadlock chain have deadlock priority set to HIGH or to an integer value greater than 0, but will not be the deadlock victim if the other sessions have deadlock priority set to LOW or to an integer value less than 0. También especifica que la sesión actual puede ser víctima de interbloqueo si otra sesión tiene establecido un valor de prioridad de interbloqueo NORMAL o un valor entero igual a 0.It also specifies that the current session is eligible to be the deadlock victim if another other session has set deadlock priority to NORMAL or to an integer value equal to 0. NORMAL es la prioridad predeterminada.NORMAL is the default priority.

HIGHHIGH
Especifica que la sesión actual será el sujeto de interbloqueo si el resto de las sesiones implicadas en la cadena de interbloqueos tienen la prioridad de interbloqueo establecida en un valor entero superior a 5 o puede ser el sujeto de interbloqueo si otra sesión tiene la prioridad de interbloqueo establecida en HIGH o en un valor entero igual a 5.Specifies that the current session will be the deadlock victim if other sessions involved in the deadlock chain have deadlock priority set to an integer value greater than 5, or is eligible to be the deadlock victim if another session has also set deadlock priority to HIGH or to an integer value equal to 5.

<prioridad numérica ><numeric-priority>
Es un intervalo de valores enteros (-de 10 a 10) para proporcionar 21 niveles de prioridad de interbloqueo.Is an integer value range (-10 to 10) to provide 21 levels of deadlock priority. Especifica que la sesión actual será el sujeto de interbloqueo si el resto de las sesiones de la cadena de interbloqueos se ejecutan con un valor de prioridad de interbloqueo superior, pero no será el sujeto de interbloqueo si el resto de las sesiones se ejecutan con un valor de prioridad de interbloqueo inferior al valor de la sesión actual.It specifies that the current session will be the deadlock victim if other sessions in the deadlock chain are running at a higher deadlock priority value, but will not be the deadlock victim if the other sessions are running at a deadlock priority value lower than the value of the current session. Además, especifica que la sesión actual puede ser el sujeto de interbloqueo si se ejecuta otra sesión con un valor de prioridad de interbloqueo igual al de la sesión actual.It also specifies that the current session is eligible to be the deadlock victim if another session is running with a deadlock priority value that is the same as the current session. LOW se asigna a -5, NORMAL a 0 y HIGH a 5.LOW maps to -5, NORMAL to 0, and HIGH to 5.

@deadlock_var@ deadlock_var
Es una variable de carácter que especifica la prioridad del interbloqueo.Is a character variable specifying the deadlock priority. La variable se debe establecer en el valor 'LOW', 'NORMAL' o 'HIGH'.The variable must be set to a value of 'LOW', 'NORMAL' or 'HIGH'. La variable debe tener la longitud suficiente para contener la cadena completa.The variable must be large enough to hold the entire string.

@deadlock_intvar@ deadlock_intvar
Es una variable de entero que especifica la prioridad del interbloqueo.Is an integer variable specifying the deadlock priority. La variable se debe establecer en un valor entero en el intervalo (de -10 a 10).The variable must be set to an integer value in the range (-10 to 10).

ComentariosRemarks

Los interbloqueos se producen cuando dos sesiones esperan a tener acceso a los recursos bloqueados por la otra sesión.Deadlocks arise when two sessions are both waiting for access to resources locked by the other. Si una instancia de SQL ServerSQL Server detecta que dos sesiones están interbloqueadas, resuelve el interbloqueo mediante la elección de una de las sesiones como el sujeto de interbloqueo.When an instance of SQL ServerSQL Server detects that two sessions are deadlocked, it resolves the deadlock by choosing one of the sessions as a deadlock victim. La transacción actual del sujeto se revierte y se devuelve el mensaje de error de interbloqueo 1205 al cliente.The current transaction of the victim is rolled back and deadlock error message 1205 is returned to the client. De este modo, se desbloquea dicha sesión para que pueda continuar la otra sesión.This releases all of the locks held by that session, allowing the other session to proceed.

La selección de la sesión como sujeto de interbloqueo depende de la prioridad de interbloqueo de cada sesión:Which session is chosen as the deadlock victim depends on each session's deadlock priority:

  • Si ambas sesiones tienen la misma prioridad de interbloqueo, la instancia de SQL ServerSQL Server elige la sesión cuya reversión como sujeto de interbloqueo resulta menos costosa.If both sessions have the same deadlock priority, the instance of SQL ServerSQL Server chooses the session that is less expensive to roll back as the deadlock victim. Por ejemplo, si ambas sesiones tienen la prioridad de interbloqueo establecida en HIGH, la instancia elige como sujeto de interbloqueo la sesión cuya reversión considera menos costosa.For example, if both sessions have set their deadlock priority to HIGH, the instance will choose as a victim the session it estimates is less costly to roll back.

  • Si las sesiones tienen distintas prioridades de interbloqueo, la sesión con la prioridad de interbloqueo inferior se elige como el sujeto de interbloqueo.If the sessions have different deadlock priorities, the session with the lowest deadlock priority is chosen as the deadlock victim.

    SET DEADLOCK_PRIORITY se establece en tiempo de ejecución, no en tiempo de análisis.SET DEADLOCK_PRIORITY is set at execute or run time and not at parse time.

PermissionsPermissions

Debe pertenecer al rol public .Requires membership in the public role.

EjemplosExamples

En el siguiente ejemplo se utiliza una variable para establecer la prioridad de interbloqueo en LOW.The following example uses a variable to set the deadlock priority to LOW.

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

SET DEADLOCK_PRIORITY @deadlock_var;  
GO  

En el siguiente ejemplo se establece la prioridad de interbloqueo en NORMAL.The following example sets the deadlock priority to NORMAL.

SET DEADLOCK_PRIORITY NORMAL;  
GO  

Vea tambiénSee Also

@@LOCK_TIMEOUT (Transact-SQL) @@LOCK_TIMEOUT (Transact-SQL)
Instrucciones SET (Transact-SQL) SET Statements (Transact-SQL)
SET LOCK_TIMEOUT ( Transact-SQL )SET LOCK_TIMEOUT (Transact-SQL)