SQL Server mette a disposizione del programmatore alcune tabelle con importanti informazioni sullo stato generale del sistema. Una di queste contiene l’elenco degli utenti loggati, un’altra la lista di tutte le tabelle disponibili, un’altra ancora la lista dei blocchi sugli oggetti a causa delle operazioni di insert, update, delete.

Spesso su database con alta concorrenza è utile sapere chi sta bloccando e cosa. Quando ci sono rallentamenti o blocchi inattesi del database mettere insieme queste informazioni diagnostiche, è fondamentale per la risoluzione dei problemi.

Questa query restituisce l’elenco degli utenti che stanno bloccando delle tabelle, indicando il tempo di attesa, il numero di lock inseriti ed il tipo di attesa.

Nell’esempio si può facilmente osservare che:

  • L’application server di NAV sta bloccando 4 tabelle
  • La tabella delle ricezioni acquisto registrate è bloccata da circa 2 secondi a causa dell’I/O di rete (un cursore aperto)
  • La tabella clienti ed il saldo dei movimenti contabili clienti sono bloccate a causa della mancanza di CPU