Gestione degli errori del Motore di database

Molti errori generati da Motore di database di SQL Server possono essere acquisiti e risolti a livello di programmazione. Le funzionalità di gestione degli errori sono disponibili tramite il linguaggio Transact-SQL e le API di accesso ai dati utilizzate dalle applicazioni per accedere ai dati archiviati in Motore di database.

Gli errori di Motore di database possono essere gestiti a due livelli:

  • Gli errori possono essere gestiti in Motore di database aggiungendo il codice per la gestione degli errori a batch, stored procedure, trigger o funzioni definite dall'utente Transact-SQL.

  • Gli errori possono essere restituiti all'applicazione che ha eseguito la chiamata e gestiti nel codice dell'applicazione. Ognuna delle API utilizzate dalle applicazioni per accedere a Motore di database offre meccanismi che consentono di passare le informazioni sull'errore all'applicazione.

Argomento

Descrizione

Informazioni sugli errori del Motore di database

Ogni errore di Motore di database include gli attributi seguenti: numero di errore, stringa di messaggio, gravità, stato, nome della procedura e numero di riga.

Recupero di informazioni sugli errori in Transact-SQL

Il codice Transact-SQL può recuperare le informazioni sugli errori tramite le funzioni ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE e @@ERROR.

TRY...CATCH (Transact-SQL)

Consente di elaborare gli errori nel codice Transact-SQL utilizzando un costrutto TRY…CATCH simile alla funzionalità di gestione delle eccezioni dei linguaggi Microsoft Visual C++ e Visual C#. Quando viene rilevata una condizione di errore in un blocco TRY, il controllo viene passato a un blocco CATCH, dove può essere eseguita l'elaborazione.

Utilizzo di TRY...CATCH in Transact-SQL

Consente di elaborare gli errori nel codice Transact-SQL utilizzando un costrutto TRY…CATCH simile alla funzionalità di gestione delle eccezioni dei linguaggi Microsoft Visual C++ e Visual C#. Quando viene rilevata una condizione di errore in un blocco TRY, il controllo viene passato a un blocco CATCH, dove può essere eseguita l'elaborazione.

Utilizzo di RAISERROR

È possibile utilizzare l'istruzione RAISERROR per generare errori definiti dall'utente. Questa istruzione può inoltre essere utilizzata da un blocco CATCH per passare all'applicazione gli errori elaborati nel blocco CATCH.

Utilizzo di PRINT

È possibile utilizzare l'istruzione PRINT per restituire all'applicazione messaggi definiti dall'utente.

Utilizzo di @@ERROR

Nelle versioni precedenti di SQL Server la funzione @@ERROR rappresenta il metodo principale per rilevare gli errori nelle istruzioni Transact-SQL. Il costrutto TRY…CATCH offre funzionalità migliorate.

Gestione degli errori e dei messaggi nelle applicazioni

Tutte le API di accesso ai dati, ad esempio ADO (ActiveX Data Objects), OLE DB e ODBC (Open Database Connectivity) dispongono di meccanismi per segnalare all'applicazione le informazioni sugli errori ricevute da Motore di database.

Gravità degli errori del Motore di database

Gli errori di Motore di database e i messaggi di errore definiti dall'utente vengono generati con un livello di gravità compreso tra 1 e 25. È possibile utilizzare sp_addmessage e RAISERROR per generare messaggi di errore definiti dall'utente.

Vedere anche

Riferimento