Gravità degli errori del Motore di databaseDatabase Engine Error Severities

Negli errori generati da Motore di database di SQL ServerSQL Server Database Engine, la gravità dell'errore indica il tipo di problema rilevato da SQL ServerSQL Server.When an error is raised by the Motore di database di SQL ServerSQL Server Database Engine, the severity of the error indicates the type of problem encountered by SQL ServerSQL Server.

Livelli di gravitàLevels of Severity

Nella tabella seguente sono elencati e descritti i livelli di gravità degli errori generati da Motore di database di SQL ServerSQL Server Database Engine.The following table lists and describes the severity levels of the errors raised by the Motore di database di SQL ServerSQL Server Database Engine.

Livello di gravitàSeverity level DescrizioneDescription
0-90-9 Messaggi informativi che restituiscono dettagli sullo stato o segnalano errori non gravi.Informational messages that return status information or report errors that are not severe. Motore di databaseDatabase Engine non genera errori di sistema con livelli di gravità compresi tra 0 e 9.The Motore di databaseDatabase Engine does not raise system errors with severities of 0 through 9.
1010 Messaggi informativi che restituiscono dettagli sullo stato o segnalano errori non gravi.Informational messages that return status information or report errors that are not severe. Per motivi di compatibilità, Motore di databaseDatabase Engine converte il livello di gravità 10 nel livello di gravità 0 prima di restituire informazioni sull'errore all'applicazione chiamante.For compatibility reasons, the Motore di databaseDatabase Engine converts severity 10 to severity 0 before returning the error information to the calling application.
11-1611-16 Indicano errori che possono essere corretti dall'utente.Indicate errors that can be corrected by the user.
1111 Indica che l'entità o l'oggetto specificato non esiste.Indicates that the given object or entity does not exist.
1212 Livello di gravità distinto per le query che non utilizzano il blocco a causa di hint per query speciali.A special severity for queries that do not use locking because of special query hints. In alcuni casi, le operazioni di lettura eseguite da queste istruzioni possono generare dati inconsistenti, poiché non vengono acquisiti blocchi per garantire la consistenza.In some cases, read operations performed by these statements could result in inconsistent data, since locks are not taken to guarantee consistency.
1313 Indica errori di deadlock di transazione.Indicates transaction deadlock errors.
1414 Indica errori relativi alla sicurezza, ad esempio un'autorizzazione negata.Indicates security-related errors, such as permission denied.
1515 Indica errori di sintassi nel comando Transact-SQLTransact-SQL .Indicates syntax errors in the Transact-SQLTransact-SQL command.
1616 Indica errori generali che possono essere corretti dall'utente.Indicates general errors that can be corrected by the user.
17-1917-19 Indicano errori software che possono essere corretti dall'utente.Indicate software errors that cannot be corrected by the user. È consigliabile informare l'amministratore di sistema del problema.Inform your system administrator of the problem.
1717 Indica che l'istruzione ha causato l'esaurimento delle risorse di SQL ServerSQL Server , ad esempio memoria, blocchi o spazio su disco per il database, oppure il superamento di un limite impostato dall'amministratore di sistema.Indicates that the statement caused SQL ServerSQL Server to run out of resources (such as memory, locks, or disk space for the database) or to exceed some limit set by the system administrator.
1818 Indica un problema nel software di Motore di databaseDatabase Engine , ma viene completata l'esecuzione dell'istruzione e viene mantenuta la connessione all'istanza di Motore di databaseDatabase Engine .Indicates a problem in the Motore di databaseDatabase Engine software, but the statement completes execution, and the connection to the instance of the Motore di databaseDatabase Engine is maintained. Ogni volta che viene visualizzato un messaggio con livello di gravità 18, è consigliabile informare l'amministratore di sistema.The system administrator should be informed every time a message with a severity level of 18 occurs.
1919 Indica che è stato superato un limite di Motore di databaseDatabase Engine non configurabile e che è stata terminata l'elaborazione batch corrente.Indicates that a nonconfigurable Motore di databaseDatabase Engine limit has been exceeded and the current batch process has been terminated. I messaggi di errore con livello di gravità 19 o superiore arrestano l'esecuzione del batch corrente.Error messages with a severity level of 19 or higher stop the execution of the current batch. Gli errori con livello di gravità 19 sono rari e devono essere corretti dall'amministratore di sistema o dal supporto tecnico.Severity level 19 errors are rare and must be corrected by the system administrator or your primary support provider. Se viene generato un messaggio con livello di gravità 19, rivolgersi all'amministratore di sistema.Contact your system administrator when a message with a severity level 19 is raised. I messaggi di errore con livello di gravità compreso tra 19 e 25 vengono scritti nel log degli errori.Error messages with a severity level from 19 through 25 are written to the error log.
20-2420-24 Indicano problemi di sistema e rappresentano errori irreversibili. Pertanto, l'attività del Motore di databaseDatabase Engine tramite cui viene eseguita un'istruzione o un batch non è più in esecuzione.Indicate system problems and are fatal errors, which means that the Motore di databaseDatabase Engine task that is executing a statement or batch is no longer running. L'attività registra le informazioni sul problema che si è verificato e termina l'esecuzione.The task records information about what occurred and then terminates. Nella maggior parte dei casi è possibile che venga terminata anche la connessione dell'applicazione all'istanza di Motore di databaseDatabase EngineIn most cases, the application connection to the instance of the Motore di databaseDatabase Engine may also terminate. e, a seconda del problema, l'applicazione potrebbe non essere in grado di eseguire la riconnessione.If this happens, depending on the problem, the application might not be able to reconnect.

I messaggi di errore compresi in questo intervallo possono riguardare tutti i processi che accedono ai dati dello stesso database e potrebbero indicare che un database o un oggetto è danneggiato.Error messages in this range can affect all of the processes accessing data in the same database and may indicate that a database or object is damaged. I messaggi di errore con livello di gravità compreso tra 19 e 24 vengono scritti nel log degli errori.Error messages with a severity level from 19 through 24 are written to the error log.
2020 Indica che si è verificato un problema relativo a un'istruzione.Indicates that a statement has encountered a problem. Poiché il problema riguarda solo l'attività corrente, è probabile che il database non sia stato danneggiato.Because the problem has affected only the current task, it is unlikely that the database itself has been damaged.
2121 Indica che si è verificato un problema che riguarda tutte le attività del database corrente, ma è probabile che il database non sia stato danneggiato.Indicates that a problem has been encountered that affects all tasks in the current database, but it is unlikely that the database itself has been damaged.
2222 Indica che la tabella o l'indice specificato nel messaggio è stato danneggiato a causa di un problema software o hardware.Indicates that the table or index specified in the message has been damaged by a software or hardware problem.

Gli errori con livello di gravità 22 si verificano raramente.Severity level 22 errors occur rarely. Se viene generato un tale errore, eseguire DBCC CHECKDB per determinare se sono stati danneggiati anche altri oggetti contenuti nel database.If one occurs, run DBCC CHECKDB to determine whether other objects in the database are also damaged. Il problema potrebbe essere limitato esclusivamente alla cache buffer e non riguardare il disco.The problem might be in the buffer cache only and not on the disk itself. In tal caso, è possibile correggere il problema riavviando l'istanza di Motore di databaseDatabase Engine .If so, restarting the instance of the Motore di databaseDatabase Engine corrects the problem. Per continuare a lavorare, è necessario riconnettersi all'istanza di Motore di databaseDatabase Engine; in alternativa, risolvere il problema utilizzando DBCC.To continue working, you must reconnect to the instance of the Motore di databaseDatabase Engine; otherwise, use DBCC to repair the problem. In alcuni casi, potrebbe essere necessario ripristinare il database.In some cases, you may have to restore the database.

Se il problema persiste dopo il riavvio dell'istanza di Motore di databaseDatabase Engine , il problema è presente sul disco.If restarting the instance of the Motore di databaseDatabase Engine does not correct the problem, then the problem is on the disk. L'eliminazione dell'oggetto specificato nel messaggio di errore consente talvolta di risolvere il problema.Sometimes destroying the object specified in the error message can solve the problem. Se ad esempio il messaggio segnala che l'istanza di Motore di databaseDatabase Engine ha rilevato una riga con lunghezza pari a 0 in un indice non cluster, è sufficiente eliminare l'indice e ricompilarlo.For example, if the message reports that the instance of the Motore di databaseDatabase Engine has found a row with a length of 0 in a nonclustered index, delete the index and rebuild it.
2323 Indica che l'integrità dell'intero database è compromessa a causa di un problema hardware o software.Indicates that the integrity of the entire database is in question because of a hardware or software problem.

Gli errori con livello di gravità 23 si verificano raramente.Severity level 23 errors occur rarely. Se viene generato un tale errore, eseguire DBCC CHECKDB per determinare l'entità del danno.If one occurs, run DBCC CHECKDB to determine the extent of the damage. Il problema potrebbe essere limitato esclusivamente alla cache e non riguardare il disco.The problem might be in the cache only and not on the disk itself. In tal caso, è possibile correggere il problema riavviando l'istanza di Motore di databaseDatabase Engine .If so, restarting the instance of the Motore di databaseDatabase Engine corrects the problem. Per continuare a lavorare, è necessario riconnettersi all'istanza di Motore di databaseDatabase Engine; in alternativa, risolvere il problema utilizzando DBCC.To continue working, you must reconnect to the instance of the Motore di databaseDatabase Engine; otherwise, use DBCC to repair the problem. In alcuni casi, potrebbe essere necessario ripristinare il database.In some cases, you may have to restore the database.
2424 Indica un errore del supporto.Indicates a media failure. È possibile che l'amministratore di sistema debba ripristinare il database.The system administrator may have to restore the database. Potrebbe anche essere necessario rivolgersi al fornitore dell'hardware.You may also have to call your hardware vendor.

Gravità dei messaggi di errore definiti dall'utenteUser-Defined Error Message Severity

sp_addmessage consente di aggiungere messaggi di errore definiti dall'utente con livelli di gravità compresi tra 1 e 25 alla vista del catalogo sys.messages .sp_addmessage can be used to add user-defined error messages with severities from 1 through 25 to the sys.messages catalog view. Tali messaggi di errore definiti dall'utente possono essere utilizzati da RAISERROR.These user-defined error messages can be used by RAISERROR. Per altre informazioni, vedere sp_addmessage (Transact-SQL).For more information, see sp_addmessage (Transact-SQL).

RAISERROR può essere utilizzato per generare messaggi di errore definiti dall'utente con livelli di gravità compresi tra 1 e 25.RAISERROR can be used to generate user-defined error messages with severities from 1 through 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.RAISERROR can reference a user-defined error message stored in the sys.messages catalog view or build a message dynamically. Quando si usa il messaggio di errore definito dall'utente nella vista del catalogo sys.messages durante la generazione di un errore, la gravità specificata da RAISERROR sostituisce quella specificata in sys.messages.When using the user-defined error message in sys.messages while generating an error, the severity specified by RAISERROR overrides the severity specified in sys.messages. Per altre informazioni, vedere RAISERROR (Transact-SQL).For more information, see RAISERROR (Transact-SQL).

Gravità dell'errore e costrutto TRY…CATCHError Severity and TRY…CATCH

Un costrutto TRY…CATCH rileva tutti gli errori di esecuzione con gravità superiore a 10 che non terminano la connessione al database.A TRY…CATCH construct catches all execution errors with severity greater than 10 that do not terminate the database connection.

Gli errori con gravità compresa tra 0 e 10 sono messaggi informativi e non causano l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.Errors with severity from 0 through 10 are informational messages and do not cause execution to jump from the CATCH block of a TRY…CATCH construct.

Gli errori che terminano la connessione al database, in genere con gravità compresa tra 20 e 25, non vengono gestiti dal blocco CATCH in quanto l'esecuzione viene interrotta al termine della connessione.Errors that terminate the database connection, usually with severity from 20 through 25, are not handled by the CATCH block because execution is aborted when the connection terminates.

Per altre informazioni, vedere TRY...CATCH (Transact-SQL).For more information, see TRY...CATCH (Transact-SQL).

recupero di gravità erroreRetrieving Error Severity

La funzione di sistema ERROR_SEVERITY consente di recuperare la gravità dell'errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.The ERROR_SEVERITY system function can be used to retrieve the severity of the error that caused the CATCH block of a TRY…CATCH construct to be run. ERROR_SEVERITY restituisce NULL se chiamata al di fuori dell'ambito di un blocco CATCH.ERROR_SEVERITY returns NULL if called outside the scope of a CATCH block. Per altre informazioni, vedere ERROR_SEVERITY (Transact-SQL).For more information, see ERROR_SEVERITY (Transact-SQL).

Vedere ancheSee Also

Informazioni sugli errori del Motore di database Understanding Database Engine Errors
sys.messages (Transact-SQL) sys.messages (Transact-SQL)
Funzioni di sistema (Transact-SQL) System Functions (Transact-SQL)
TRY...CATCH (Transact-SQL) TRY...CATCH (Transact-SQL)