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 |
---|---|
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. |
|
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. |
|
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. |
|
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. |
|
È 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. |
|
È possibile utilizzare l'istruzione PRINT per restituire all'applicazione messaggi definiti dall'utente. |
|
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. |
|
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. |
|
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. |