Analizar interbloqueos con el Analizador de SQL Server

Use el Analizador de SQL Server para identificar la causa de un interbloqueo. Un interbloqueo se produce cuando hay una dependencia cíclica entre dos o más subprocesos o procesos para algún conjunto de recursos en SQL Server. El Analizador de SQL Server le permite crear una traza que registra, reproduce y muestra eventos de interbloqueo para su análisis.

Para realizar un seguimiento de los eventos de interbloqueo, agregue la clase de evento Deadlock graph a una traza. Esta clase de evento rellena la columna de datos TextData de la traza con datos XML acerca de los procesos y objetos implicados en el interbloqueo. El Analizador de SQL Server puede extraer el documento XML a un archivo XML de interbloqueo (.xdl) que puede ver después en SQL Server Management Studio. Puede configurar el Analizador de SQL Server para extraer eventos Deadlock graph en un solo archivo que contenga todos los eventos Deadlock graph o en archivos independientes. Esta extracción se puede hacer de las siguientes formas:

  • Al configurar la traza, mediante la ficha Configuración de extracción de eventos. Tenga en cuenta que esta ficha no aparece hasta que haya seleccionado el evento Deadlock graph en la ficha Selección de eventos.
  • Mediante la opción Extraer eventos de SQL Server del menú Archivo.
  • También puede extraer y guardar eventos individuales haciendo clic con el botón secundario en un evento concreto y eligiendo Extraer datos de evento.

Gráficos de interbloqueo

El Analizador de SQL Server y SQL Server Management Studio utilizan un gráfico de espera de interbloqueo para describir un interbloqueo. El gráfico de espera de interbloqueo contiene nodos de proceso, nodos de recurso y bordes que representan las relaciones entre los procesos y los recursos. Los componentes de los gráficos de espera se definen en la siguiente tabla:

Nodo de proceso

Un subproceso que realiza una tarea; por ejemplo, INSERT, UPDATE o DELETE.

Nodo de recurso

Un objeto de la base de datos; por ejemplo, una tabla, un índice o una fila.

Borde

Una relación entre un proceso y un recurso. Un borde request se produce cuando un proceso espera un recurso. Un borde owner se produce cuando un recurso espera un proceso. El modo de bloqueo se incluye en la descripción del borde. Por ejemplo, Modo: X. Para obtener más información acerca de los posibles valores que designan los modos de bloqueo, vea Modos de bloqueo.

Nodo de proceso de interbloqueo

En un gráfico de espera, el nodo de proceso contiene información acerca del proceso. En la tabla siguiente se explican los componentes de un proceso.

Componente Definición

Id. de proceso de servidor

Identificador de proceso de servidor (SPID), un identificador asignado a un servidor para el proceso que posee el bloqueo.

Id. de lote de servidores

Identificador de lote de servidores (SBID).

Id. de contexto de ejecución

Identificador de contexto de ejecución (ECID). Id. de contexto de ejecución de un subproceso dado asociado con un SPID específico.

ECID = {0,1,2,3, ...n}, donde 0 siempre representa el subproceso principal o primario, y {1,2,3, ...n} representan los subprocesos secundarios.

Prioridad de interbloqueo

Prioridad de interbloqueo del proceso. Para obtener más información acerca de los posibles valores, vea SET DEADLOCK_PRIORITY (Transact-SQL).

Registro utilizado

Cantidad de espacio del registro utilizado por el proceso.

Id. de propietario

Id. de transacción de los procesos que están usando transacciones y que actualmente están esperando en un bloqueo.

Descriptor de transacción

Puntero al descriptor de transacción que describe el estado de la transacción.

Búfer de entrada

Búfer de entrada del proceso actual; define el tipo de evento y la instrucción que se está ejecutando. Los valores posibles incluyen:

  • Idioma
  • RPC
  • Ninguno

Instrucción

Tipo de instrucción. Los valores posibles son:

  • NOP
  • SELECT
  • UPDATE
  • INSERT
  • DELETE
  • Desconocido

Nodo de recurso de interbloqueo

En un interbloqueo, dos procesos están esperando un recurso retenido por el otro recurso. En un gráfico de interbloqueo, los recursos se muestran como nodos de recursos. Cada recurso será uno de los tipos enumerados en Granularidad y jerarquías de bloqueo.

Vea también

Tareas

Cómo guardar gráficos de interbloqueo (Analizador de SQL Server)

Conceptos

Interbloqueos
Detectar y finalizar interbloqueos

Ayuda e información

Obtener ayuda sobre SQL Server 2005