Gráfico de punto muerto de SQL Server: ¿bloqueo de tabla, página o fila?

10

¿Hay alguna forma de descifrar si un bloqueo en un gráfico de punto muerto es el nivel de Tabla, Página o Fila? Tengo toda la información que necesito del gráfico, incluido el Nivel de aislamiento, (2) pero realmente quiero saber esto también.

¡Gracias a cualquiera que pueda ayudar!

tuseau
fuente

Respuestas:

13

En el gráfico XML de punto muerto, verá algo como:

<deadlock-list>
  <deadlock victim="...">
    <process-list>
      <process id="..." ... waitresource="X:..."
...

Lo Xinteresante es que los posibles valores que le interesan son:

  • RID para id de fila (bloqueo de nivel de fila)
  • PAG para bloqueo de nivel de página
  • OBJECT(que puede estar calificado para TABindicar un bloqueo de mesa)

Hay algunos otros tipos enumerados en la documentación también.

Gayo
fuente
Gracias, eso es útil. Aunque en mi gráfico tengo 2 procesos, que parecen estar usando páginas diferentes: waitresource = "RID: 21: 1: 2588: 0" waitresource = "RID: 21: 1: 2699: 1" Entonces, si están usando páginas diferentes , entonces no pueden estar en conflicto en la misma fila, ¿correcto? Porque estoy usando una sugerencia WITH (ROWLOCK) en esta consulta.
Tuseau
2
Si el proceso 1 tiene 2699 y quiere 2588, y el proceso 2 tiene 2588 y quiere 2699, eso llegaría a un punto muerto. Recuerde que un punto muerto implica una dependencia circular.
Cayo