Informazioni sugli errori del motore di database

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

La tabella seguente illustra gli attributi degli errori generati dal motore di database Microsoft SQL Server.

Attributo Descrizione
Numero di errore Numero di errore univoco per ogni messaggio di errore.
Stringa del messaggio di errore Il messaggio di errore include informazioni di diagnostica relative alla causa dell'errore. Molti messaggi di errore contengono variabili di sostituzione con informazioni specifiche, ad esempio il nome dell'oggetto che ha generato l'errore.
Gravità Indica il livello di gravità dell'errore. Gli errori con un livello di gravità basso, ad esempio 1 o 2, sono messaggi informativi o avvisi di basso livello, mentre gli errori che presentano un livello di gravità elevato segnalano problemi da risolvere immediatamente. Per altre informazioni sui livelli di gravità, vedere Gravità degli errori del Motore di database.
Provincia Alcuni messaggi di errore possono essere generati in più punti del codice per il motore di database. L'errore 1105, ad esempio, può essere generato in risposta a più condizioni diverse. A ogni condizione specifica che genera un errore viene assegnato un codice di stato univoco.

Quando si consultano database che contengono informazioni relative a problemi noti, ad esempio la Microsoft Knowledge Base, è possibile utilizzare il numero di contesto per determinare se il problema registrato corrisponde all'errore che si è verificato. Se ad esempio un articolo della Knowledge Base descrive un errore 1105 che presenta uno stato 2, mentre il messaggio di errore 1105 ricevuto dall'utente presenta uno stato 3, è probabile che la causa dell'errore sia diversa da quella indicata nell'articolo.

Il codice di stato di un errore consente inoltre al personale del supporto tecnico Microsoft di individuare la posizione nel codice sorgente da cui è stato generato il codice di errore. Queste informazioni possono fornire indicazioni aggiuntive utili per la diagnostica del problema.
Nome della stored procedure Rappresenta il nome della stored procedure o del trigger in cui si è verificato l'errore.
Numero riga Indica quale istruzione di un batch, di una stored procedure, di un trigger o di una funzione ha generato l'errore.

Tutti i messaggi di errore di sistema e definiti dall'utente in un'istanza del motore di database sono contenuti nella vista del catalogo sys.messages. È possibile utilizzare l'istruzione RAISERROR per restituire errori definiti dall'utente a un'applicazione.

Tutte le API di database, ad esempio lo spazio dei nomi Microsoft .NET Framework SQLClient, ADO (ActiveX Data Objects), OLE DB e ODBC (Open Database Connectivity) forniscono gli attributi di base dell'errore. Queste informazioni includono il numero di errore e la stringa di messaggio. Non tutte le API forniscono tuttavia anche tutti gli altri attributi dell'errore.

Le informazioni relative a un errore che si verifica nell'ambito del blocco TRY di un costrutto TRY...CATCH possono essere ottenute nel codice Transact-SQL con funzioni quali ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY ed ERROR_STATE nell'ambito del blocco CATCH associato. Per altre informazioni, vedere TRY...CATCH (Transact-SQL).

Esempi

Nell'esempio seguente viene eseguita una query sulla vista del catalogo sys.messages per restituire un elenco di tutti i messaggi di errore di sistema e definiti dall'utente nel motore di database con testo in lingua inglese (1033).

SELECT  
    message_id,  
    language_id,  
    severity,  
    is_event_logged,  
    text  
  FROM sys.messages  
  WHERE language_id = 1033;  

Per altre informazioni, vedere sys.messages (Transact-SQL).

Vedi anche

sys.messages (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)