Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

SET DEADLOCK_PRIORITY (Transact-SQL)

Especifica la importancia relativa de que la sesión actual se siga procesando si existe un interbloqueo con otra sesión.

Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual).

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

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

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

LOW

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. 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. 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.

NORMAL

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. 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. NORMAL es la prioridad predeterminada.

HIGH

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.

<numeric-priority>

Es un intervalo de valores enteros (-de 10 a 10) para proporcionar 21 niveles de prioridad de interbloqueo. 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. 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. LOW se asigna a -5, NORMAL a 0 y HIGH a 5.

@ deadlock_var

Es una variable de carácter que especifica la prioridad del interbloqueo. La variable se debe establecer en el valor 'LOW', 'NORMAL' o 'HIGH'. La variable debe tener la longitud suficiente para contener la cadena completa.

@ deadlock_intvar

Es una variable de entero que especifica la prioridad del interbloqueo. La variable se debe establecer en un valor entero en el intervalo (de -10 a 10).

Los interbloqueos se producen cuando dos sesiones esperan a tener acceso a los recursos bloqueados por la otra sesión. Si una instancia de SQL 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. La transacción actual del sujeto se revierte y se devuelve el mensaje de error de interbloqueo 1205 al cliente. De este modo, se desbloquea dicha sesión para que pueda continuar la otra sesión.

La selección de la sesión como sujeto de interbloqueo depende de la prioridad de interbloqueo de cada sesión:

  • Si ambas sesiones tienen la misma prioridad de interbloqueo, la instancia de SQL Server elige la sesión cuya reversión como sujeto de interbloqueo resulta menos costosa. 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.

  • Si las sesiones tienen distintas prioridades de interbloqueo, la sesión con la prioridad de interbloqueo inferior se elige como el sujeto de interbloqueo.

SET DEADLOCK_PRIORITY se establece en tiempo de ejecución, no en tiempo de análisis.

Debe pertenecer al rol public.

En el siguiente ejemplo se utiliza una variable para establecer la prioridad de interbloqueo en 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.

SET DEADLOCK_PRIORITY NORMAL;
GO
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft