Ho davvero problemi a rintracciare alcuni blocchi che stiamo vivendo.
Lo stato di SPID che blocca la radice è "sleep", il cmd è "AWAITING COMMAND" e lo sqltext
è SET TRANSACTION ISOLATION LEVEL READ COMMITTED
.
Quando visualizzo il rapporto Transazioni principali per conteggio transazioni bloccate, l'istruzione SQL di blocco è "-".
Ho eseguito una traccia sull'SQL e quando il blocco si verifica tracciando lo SPID di blocco radice, ma non mi ha portato da nessuna parte. L'ultima istruzione trace è uguale alla sqltext
precedente SET TRANSACTION ISOLATION LEVEL READ COMMITTED
.
Ho verificato tutte le relative procedure memorizzate che riesco a trovare per assicurarmi che abbiano TRY / CATCH INIZIA TRAN / COMMIT TRAN / ROLLBACK TRAN (utilizziamo le procedure memorizzate per tutto, quindi non ci sono istruzioni standalone in esecuzione). Questo problema è appena iniziato nelle ultime 24 ore e nessuno afferma di aver apportato modifiche al sistema.
Soluzione: una delle nostre procedure memorizzate utilizzate di rado ha avuto un errore con un inserimento (il numero di colonne non corrisponde), ma siamo ancora confusi su ciò che stava accadendo esattamente.
Quando si guardavano tutte le informazioni di traccia, l'istruzione EXEC per questa procedura memorizzata veniva elencata a volte, ma MAI poco prima che il BLOCCO si verificasse sullo SPID di blocco. Sembrava che quando ha iniziato a bloccare, la traccia non ha registrato l'esecuzione di esso (o nessuna delle dichiarazioni al suo interno). Tuttavia, ci sono altre volte in cui la traccia ha registrato la sua esecuzione e non si è verificato alcun blocco.
Il rapporto sugli errori della procedura memorizzata proveniva da un utente e sono stato in grado di trovare più istruzioni EXEC nelle tracce ed eseguirle in SSMS. Nessun momento in cui li ho eseguiti abbiamo avuto qualche blocco o si sono bloccati. Hanno funzionato come previsto (il blocco catch è stato attivato e ripristinato la transazione dopo l'errore). Dopo aver risolto la correzione della procedura memorizzata, non abbiamo più riscontrato il problema.