Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Managed Instance
Use el SQL Server Profiler 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 algunos conjuntos de recursos dentro de SQL Server. SQL Server Profiler permite crear una traza que registra, reproduce y muestra eventos de deadlock para el análisis.
Para realizar un seguimiento de los eventos de interbloqueo, agregue la clase de evento Deadlock graph a un seguimiento. Esta clase de evento rellena la columna de datos TextData del seguimiento con datos XML acerca de los procesos y objetos implicados en el interbloqueo. SQL Server Profiler 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 SQL Server Profiler 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:
En la configuración del seguimiento, use la pestaña Configuración de extracción de eventos. Esta pestaña no aparece hasta que seleccione el evento gráfico de interbloqueo en la pestaña Selección de eventos.
Mediante la opción Extraer eventos de SQL Server del menú Archivo .
También puede extraer y guardar eventos individuales al hacer clic con el botón derecho en un evento concreto y elegir Extraer datos de evento.
Gráficos de interbloqueo
SQL Server Profiler y SQL Server Management Studio usan un grafo 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 | Descripción |
---|---|
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. |
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 del servidor | Identificador de sesión (SPID), un identificador asignado por el servidor para el proceso que posee el bloqueo. |
Id. de lote del servidor | Identificador de lote de servidores (SBID). |
Identificador de contexto de ejecución | Identificador de contexto de ejecución (ECID). Identificador de contexto de ejecución de un subproceso determinado asociado a un identificador de sesión específico. ECID = { 0, 1, 2, 3, ... n }, donde 0 representa siempre el subproceso principal o primario, y { 1, 2, 3, ... n } representa los subprocesos. |
Prioridad de interbloqueo | Prioridad de interbloqueo del proceso. Para obtener más información sobre los valores posibles, consulte SET DEADLOCK_PRIORITY. |
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 que indica al descriptor de transacción, el cual 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 son: Lenguaje RPC Ninguno |
Declaración | Tipo de declaración. Los valores posibles son: NOP SELECCIONAR ACTUALIZAR INSERTAR ELIMINAR Desconocido |
Nodo de recursos de interbloqueo
En un interbloqueo, dos procesos están esperando un recurso retenido por el otro proceso. En un gráfico de interbloqueo, los recursos se muestran como nodos de recursos.