Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Negli errori generati dal motore di database SQL Server, la gravità dell'errore indica il tipo di problema rilevato da SQL Server.
Livelli di gravità
Nella tabella seguente sono elencati e descritti i livelli di gravità degli errori generati dal motore di database SQL Server.
| Livello di gravità | Descrizione |
|---|---|
| 0-9 | Indicare messaggi informativi che restituiscono informazioni sullo stato o segnalano errori che non sono gravi. Il motore di database non genera errori di sistema con livelli di gravità compresi tra 0 e 9. |
| 10 | Indica i messaggi informativi che restituiscono informazioni sullo stato o segnalano errori che non sono gravi. Per motivi di compatibilità, il motore di database converte il livello di gravità 10 nel livello di gravità 0 prima di restituire informazioni sull'errore all'applicazione chiamante. |
| 11-16 | Indicano errori che possono essere corretti dall'utente. |
| 11 | Indica che l'entità o l'oggetto specificato non esiste. |
| 12 | Livello di gravità distinto per le query che non utilizzano il blocco a causa di hint per query speciali. In alcuni casi, le operazioni di lettura eseguite da queste istruzioni potrebbero causare dati incoerenti perché i blocchi non vengono presi per garantire la coerenza. |
| 13 | Indica errori di deadlock di transazione. |
| 14 | Indica errori relativi alla sicurezza, ad esempio un'autorizzazione negata. |
| 15 | Indica errori di sintassi nel comando Transact-SQL. |
| 16 | Indica errori generali che possono essere corretti dall'utente. |
| 17-19 | Indicano errori software che possono essere corretti dall'utente. È consigliabile informare l'amministratore di sistema del problema. |
| 17 | Indica che l'istruzione ha causato l'esaurimento delle risorse di SQL Server, ad esempio memoria, blocchi o spazio su disco per il database, oppure il superamento di un limite impostato dall'amministratore di sistema. |
| 18 | Indica un problema nel software del motore di database, ma l'istruzione viene completata e la connessione all'istanza del motore di database viene mantenuta. Ogni volta che viene visualizzato un messaggio con livello di gravità 18, è consigliabile informare l'amministratore di sistema. |
| 19 | Indica che è stato superato un limite del motore di database non configurabile e che è stata terminata l'elaborazione batch corrente. I messaggi di errore con livello di gravità 19 o superiore arrestano l'esecuzione del batch corrente. Gli errori con livello di gravità 19 sono rari e devono essere corretti dall'amministratore di sistema o dal supporto tecnico. Se viene generato un messaggio con livello di gravità 19, rivolgersi all'amministratore di sistema. I messaggi di errore con livello di gravità compreso tra 19 e 25 vengono scritti nel log degli errori. |
| 20-24 | Indicare i problemi di sistema e sono errori irreversibili, il che significa che l'attività motore di database che esegue un'istruzione o un batch non è più in esecuzione. L'attività registra le informazioni sul problema che si è verificato e termina l'esecuzione. Nella maggior parte dei casi, anche la connessione dell'applicazione all'istanza del motore di database potrebbe terminare. In caso affermativo, a seconda del problema, l'applicazione potrebbe non essere in grado di riconnettersi. I messaggi di errore in questo intervallo possono influire su tutti i processi che accedono ai dati nel database e potrebbero indicare che un database o un oggetto è danneggiato. I messaggi di errore con livello di gravità compreso tra 19 e 24 vengono scritti nel log degli errori. |
| 20 | Indica che un'istruzione ha riscontrato un problema. Poiché il problema ha interessato solo l'attività corrente, è probabile che il database stesso sia danneggiato. |
| 21 | Indica che è stato rilevato un problema che interessa tutte le attività nel database corrente, ma non è probabile che il database stesso sia danneggiato. |
| 22 | Indica che la tabella o l'indice specificato nel messaggio è stato danneggiato a causa di un problema software o hardware. Gli errori con livello di gravità 22 si verificano raramente. Se viene generato un tale errore, eseguire DBCC CHECKDB per determinare se sono stati danneggiati anche altri oggetti contenuti nel database. Il problema potrebbe essere limitato esclusivamente alla cache buffer e non riguardare il disco. In tal caso, è possibile correggere il problema riavviando l'istanza del motore di database. Per continuare a funzionare, è necessario riconnettersi all'istanza del motore di database. In caso contrario, usare DBCC per risolvere il problema. In alcuni casi potrebbe essere necessario ripristinare il database.Se il riavvio dell'istanza del motore di database non risolve il problema, il problema si trova sul disco. A volte l'eliminazione dell'oggetto specificato nel messaggio di errore risolve il problema. Se ad esempio il messaggio segnala che l'istanza del motore di database ha rilevato una riga con lunghezza pari a 0 in un indice non cluster, è sufficiente eliminare l'indice e ricompilarlo. |
| 23 | Indica che l'integrità dell'intero database è compromessa a causa di un problema hardware o software. Gli errori con livello di gravità 23 si verificano raramente. Se viene generato un tale errore, eseguire DBCC CHECKDB per determinare l'entità del danno. Il problema potrebbe essere limitato esclusivamente alla cache e non riguardare il disco. In tal caso, è possibile correggere il problema riavviando l'istanza del motore di database. Per continuare a funzionare, è necessario riconnettersi all'istanza del motore di database. In caso contrario, usare DBCC per risolvere il problema. In alcuni casi potrebbe essere necessario ripristinare il database. |
| 24 | Indica un errore del supporto. L'amministratore di sistema potrebbe dover ripristinare il database. Potrebbe anche essere necessario chiamare il fornitore dell'hardware. |
Gravità dei messaggi di errore definiti dall'utente
É possibile usare sp_addmessage per aggiungere messaggi di errore definiti dall'utente con livelli di gravità compresi tra 1 e 25 alla vista del catalogo sys.messages. Tali messaggi di errore definiti dall'utente possono essere utilizzati da RAISERROR. Per altre informazioni, vedere sp_addmessage.
RAISERROR può essere utilizzato per generare messaggi di errore definiti dall'utente con livelli di gravità compresi tra 1 e 25.
RAISERROR può fare riferimento a un messaggio di errore definito dall'utente archiviato nella vista del catalogo sys.messages oppure compilare un messaggio in modo dinamico. Quando RAISERROR usa un messaggio di errore definito dall'utente in sys.messages quando genera un errore, la gravità specificata da RAISERROR esegue l'override della gravità specificata in sys.messages. Per altre informazioni, vedere RAISERROR.
Gravità dell'errore e TRY...CATCH
Un TRY...CATCH costrutto rileva tutti gli errori di esecuzione con gravità maggiore di 10 che non terminano la connessione al database.
Gli errori con gravità da 0 a 10 sono messaggi informativi e non causano il passaggio dell'esecuzione dal CATCH blocco di un TRY...CATCH costrutto.
Gli errori che terminano la connessione al database, in genere con gravità da 20 a 25, non vengono gestiti dal blocco perché l'esecuzione CATCH viene interrotta al termine della connessione.
Per altre informazioni, vedere TRY... CATCH.
Recupero di gravità errore
La ERROR_SEVERITY funzione di sistema può essere usata per recuperare la gravità dell'errore che ha causato l'esecuzione CATCH del blocco di un TRY...CATCH costrutto.
ERROR_SEVERITY restituisce NULL se viene chiamato all'esterno dell'ambito di un CATCH blocco. Per altre informazioni, vedere ERROR_SEVERITY.